1

我有一个脚本,它body从一个名为bg-images. 如果选择的背景图像在图像文件名中有“_dark”,我想为 body 元素添加一个特殊的类。

这是我正在使用的 jQuery。它在 Chrome 和 Safari 中运行良好,但在 Firefox 中不起作用:

    var backgroundImage = $('body').css('background');
    var isitdark = "_dark";

    if (backgroundImage.indexOf( isitdark ) != -1 ) {
        $('body').addClass("dark");
    } else {
        $('body').removeClass("dark");
    }

为什么这在 Firefox 中没有任何作用?有没有更好的写法?

我已经尝试添加"type=text/javascript"到我所有的脚本标签,但这似乎没有帮助,我网站上的 jQuery 的其余部分在所有浏览器中都能正常工作。

4

2 回答 2

5

您没有$('body').css('background');使用 Use获得背景图像.css('background-image')

var backgroundImage = $('body').css('background-image');

这不是必需的,因为字符串 _dark 会出现或不会出现,但如果你愿意,你可以删除url()orurl("")

var backgroundImage = /url\(\s*(['"]?)(.*?)\1\s*\)/g.exec($('body').css('background-image'))[2];

在 FF 中运行良好

http://jsfiddle.net/mNX3A/

于 2013-10-20T21:23:18.077 回答
4

background是一个速记属性。不保证使用以下命令正确检索css速记属性:

检索速记 CSS 属性(例如,、、、marginbackground虽然border在某些浏览器中可用,但不能保证。

如果你特别想得到background-image,得到background-image

var backgroundImage = $('body').css('background-image');
于 2013-10-20T21:25:57.263 回答