JavaScriptで要素のbackground-image
URLを取得するにはどうすればよいですか?<div>
たとえば、私はこれを持っています:
<div style="background-image:url('http://www.example.com/img.png');">...</div>
のURLだけを取得するにはどうすればよいbackground-image
ですか?
JavaScriptで要素のbackground-image
URLを取得するにはどうすればよいですか?<div>
たとえば、私はこれを持っています:
<div style="background-image:url('http://www.example.com/img.png');">...</div>
のURLだけを取得するにはどうすればよいbackground-image
ですか?
あなたはこれを試すことができます:
var img = document.getElementById('your_div_id'),
style = img.currentStyle || window.getComputedStyle(img, false),
bi = style.backgroundImage.slice(4, -1).replace(/"/g, "");
// Get the image id, style and the url from it
var img = document.getElementById('testdiv'),
style = img.currentStyle || window.getComputedStyle(img, false),
bi = style.backgroundImage.slice(4, -1).replace(/"/g, "");
// Display the url to the user
console.log('Image URL: ' + bi);
<div id="testdiv" style="background-image:url('http://placehold.it/200x200');"></div>
編集:
以下の@Miguelおよびその他のコメントに基づいて、ブラウザ(IE / FF / Chrome ...)がURLに引用符を追加した場合は、これを試して追加の引用符を削除できます。
bi = style.backgroundImage.slice(4, -1).replace(/"/g, "");
一重引用符が含まれている可能性がある場合は、次を使用します。replace(/['"]/g, "")
他の誰かが同様のアイデアを持っている場合に備えてこれに追加するために、正規表現を使用することもできます。
var url = backgroundImage.match(/url\(["']?([^"']*)["']?\)/)[1];
ただし、jsPerfによると、@ PraveenのソリューションはSafariとFirefoxで実際にパフォーマンスが向上しているようです:http://jsperf.com/match-vs-slice-and-replace
値に引用符が含まれているが、それが二重引用符であるか一重引用符であるかわからない場合を考慮したい場合は、次のようにすることができます。
var url = backgroundImage.slice(4, -1).replace(/["']/g, "");
これを試して:
var url = document.getElementById("divID").style.backgroundImage;
alert(url.substring(4, url.length-1));
または、を使用してreplace
:
url.replace('url(','').replace(')','');
// Or...
backgroundImage.slice(4, -1).replace(/["']/g, "");
まず、背景画像のコンテンツを返す必要があります。
var img = $('#your_div_id').css('background-image');
これにより、次のようなURLが返されます。
"url(' http://www.example.com/img.png ')"
次に、このURLの不要な部分を削除する必要があります。
img = img.replace(/(url\(|\)|")/g, '');
const regex = /background-image:url\(["']?([^"']*)["']?\)/gm;
const str = `<div style="background-image:url('http://www.example.com/img.png');">...</div>`;
let m;
while ((m = regex.exec(str)) !== null) {
// This is necessary to avoid infinite loops with zero-width matches
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
// The result can be accessed through the `m`-variable.
m.forEach((match, groupIndex) => {
console.log(`Found match, group ${groupIndex}: ${match}`);
});
}
background-image
括弧や引用符なしで、すべてのURLをコンソールに記録します。
var element = document.getElementById('divId');
var prop = window.getComputedStyle(element).getPropertyValue('background-image');
var re = /url\((['"])?(.*?)\1\)/gi;
var matches;
while ((matches = re.exec(prop)) !== null) {
console.log(matches[2]);
}