访问“背景图像” webkit 浏览器中的 css 属性

发布于 2024-11-15 08:55:45 字数 910 浏览 0 评论 0原文

我正在使用 css 设置某些元素的背景图像(某些元素没有背景图像),

.file-type-pdf {
    background-image: url("file-type-pdf.png");
}

然后我尝试在 javascript 中确定某些元素是否有背景图像,如下所示

var style = YAHOO.util.Dom.getStyle(el, 'background-image');
console.log(style);

这在 FF 中完美运行,其中没有背景图像的元素背景图像返回“none”,带有背景图像的元素返回图像 url。

但是,在 chrome 和 safari 中,相同的代码在两种情况下都会返回空字符串。

如果我要在 javascript 代码中设置背景图像如下,chrome 和 safari 然后正确返回图像 url 'foo.jpg'

YAHOO.util.Dom.setStyle(el, 'background-image', 'url("foo.jpg")');
var style = YAHOO.util.Dom.getStyle(el, 'background-image');
console.log(style);

但是,我无法弄清楚为什么这些浏览器无法访问通过 css 设置的背景图像

另请注意这种语法(可能对某些人来说更熟悉)产生相同的结果(webkit 浏览器中为空字符串,但在 FF 上正确)...

var style = window.getComputedStyle(el, null) || el.currentStyle;
console.log(style.backgroundImage);

任何帮助将不胜感激

I am setting the background-image of some elements using css (some elements have no background image)

.file-type-pdf {
    background-image: url("file-type-pdf.png");
}

I am then trying to determine in javascript whether certain elements have a background image or not, as follows

var style = YAHOO.util.Dom.getStyle(el, 'background-image');
console.log(style);

This works perfectly in FF, where elements with no background image return 'none' and elements with a background image return the image url.

However, in chrome and safari, the same code returns an empty string for both cases.

If i were to set a background image in the javascript code as follows, chrome and safari then return the image url 'foo.jpg' correctly

YAHOO.util.Dom.setStyle(el, 'background-image', 'url("foo.jpg")');
var style = YAHOO.util.Dom.getStyle(el, 'background-image');
console.log(style);

However, I cannot work out why these browsers cannot access the background-image set through the css

Note also that this syntax (maybe more familiar to some) is producing the same results (empty string in webkit browsers but correct on FF)...

var style = window.getComputedStyle(el, null) || el.currentStyle;
console.log(style.backgroundImage);

Any help would be much appreciated

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

妥活 2024-11-22 08:55:45

这对于我使用此页面上的 Chrome 控制台的 Stack Overflow 徽标效果很好。

对于普通 JS:

var logo = document.getElementById("hlogo").childNodes[1];
getComputedStyle(logo).getPropertyValue('background-image');

对于 jQuery:

$("#hlogo a").css("backgroundImage")`

对于 YUI:

// You have to load YUI first.
var logo = document.getElementById("hlogo").childNodes[1];
YAHOO.util.Dom.getStyle(logo, 'background-image');

全部返回 "url(http://cdn.sstatic.net/stackoverflow/img/sprites.png?v=3)"

This works fine for me on the Stack Overflow logo using the Chrome console on this page.

For vanilla JS:

var logo = document.getElementById("hlogo").childNodes[1];
getComputedStyle(logo).getPropertyValue('background-image');

For jQuery:

$("#hlogo a").css("backgroundImage")`

For YUI:

// You have to load YUI first.
var logo = document.getElementById("hlogo").childNodes[1];
YAHOO.util.Dom.getStyle(logo, 'background-image');

All return "url(http://cdn.sstatic.net/stackoverflow/img/sprites.png?v=3)".

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文