簡體   English   中英

Javascript獲取元素背景圖片,但消除“ url()”

[英]Javascript get element background image BUT eliminate the “url()”

我一直在開發圖片庫,但我一直在創造自己,並在其中添加了“放大”功能。

我知道我非常接近成功,但是我只有一個小問題。 在Javascript中,我設法獲取了將被放大的圖像的background屬性,但它抓取了包括url()的圖像。 我只想獲取不包括url()的URL(http:... / url()

我希望這不是很令人困惑,但是如果您願意,這是指向我的項目的鏈接。 單擊圖像進行放大,但實際上它會警告background-image屬性,因為我想先查看它的內容。

看看這個

這可能嗎?


更新

您可以使用正則表達式來url()如下所示:

  var sourceimg = document.getElementById("image");
  var url = window.getComputedStyle(sourceimg, null).getPropertyValue("background-image");
  var urlWithoutUrl = url.replace(/.*\s?url\([\'\"]?/, '').replace(/[\'\"]?\).*/, '')
  alert(urlWithoutUrl);

:)

最簡單的解決方案是切片方法。 第一個參數指定從何處開始選擇,第二個參數指定從字符串末尾開始的選擇的結束(如果為負)。 因此,您的代碼應為:

var bkImg = window.getComputedStyle(sourceimg,null).getPropertyValue("background-image");
var bkImgUrl = bkImg.slice(4, -1);

最好只將字符串放在url()內,而不要使用正則表達式或其他內容。

var url = "url(somefile.gif)";
var final_url = url.substr(4, url.length - 4 - 1);

參數:初始位置(從0開始,這意味着第四個字符是“ s”)以及將創建新字符串的字符數(即,原始字符串的長度減去4 -url url( stuff-和minus 1-the ) stuff-)。

結果將是:

somefile.gif

在您的問題中使用它:

var url = window.getComputedStyle(sourceimg,null).getPropertyValue("background-image");
var final_url = url.substr(4, url.length - 4 - 1);
alert(final_url);

使用正則表達式或子字符串的位置

s.IndexOf("(")) + 1;

在“ URL(”)之后加上所有內容,然后修剪最后一個字符以刪除“)”。

嘗試

var url = $(el).css("backgroundImage").split(/\s|url\(|\)/).filter(Boolean)[0];

 var url = $("body").css("backgroundImage").split(/\\s|url\\(|\\)/).filter(Boolean)[0]; console.log(url); 
 body { width:300px; height:200px; background-image: url('http://lorempixel.com/300/200/technics/') } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <body></body> 

這是您需要在代碼中進行的更改:

alert(window.getComputedStyle(sourceimg,null).getPropertyValue("background-image").replace(/^url\((http.+)\)$/g, '$1'));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM