[英]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.