2

这有点令人抓狂。我有代码将当前背景图像从选定元素保存到一个变量中,然后我用它来创建一个 img 标签。

简而言之,以下适用于我测试过的所有浏览器,除了 IE6:

var bg = $('.element_selector').css('background-image');

IE6 的返回值为'none',这是不正确的。(在有人建议尝试“背景图像”而不是“背景图像”之前,不要骰子。)

关于如何获得该价值的任何想法?

更新:我忘了提到有问题的背景图像是由DD_belatedPNG处理的,现在这似乎是罪魁祸首——如果我注释掉修复程序,我就会得到我的价值。如果有人知道在 png 修复后我仍然可以如何获取该值,请告诉我。

4

2 回答 2

0
  1. 你试过background吗?
  2. 你确定元素是对的吗?
于 2011-04-13T16:51:37.480 回答
0

在 IE6 中进行一些测试后,我能够使用DD_belatedPNG和背景 src 重现您的问题。

这是我发现的。如果您background-image在调用之前设置变量,DD_belatedPNG.fix('[selector]');那么您将获得所需的结果。如果你在之后设置它,例如在一个click事件中你得到一个"none".

此外,DD_belatedPNG 将图像元素添加到包含背景图像的页面(具有 类DD_belatedPNG_sizeFinder),因此您可以潜在地 1)重用,2)复制,或 3)src从该元素获取属性值。

这是我的测试代码:

CSS:

#myElement
{
    width: 515px;
    height: 341px;
    margin: 100px auto;
    background: #f00 url('http://www.chismbrothers.com/images/woodfloors.png') no-repeat 0 0;
}

HTML:

<div id="myElement"></div>


<div id="test1"></div>
<div id="test2"></div>
<div id="test3"></div>
<div id="test4"></div>

jQuery:

$(document).ready(function() {
    // Works as expected
    var bg = $('#myElement').css('background-image');
    $('#test1').text("pre png fix: " + bg);

    DD_belatedPNG.fix('#myElement');

    $('#myElement').click(function() {
        var bg = $(this).css('background-image');
        var bgAll = $(this).css('background');

        // This yields values of 'none' for bg and 'undefined' for bgAll
        $('#test2').html("post png fix: " + bg + "<br />bg: " + bgAll);

        // DD_belatedPNG creates an image element on the page with a class of 
        // 'DD_belatedPNG_sizeFinder' which can be used to get the image src
        $('#test3').html('dd_belatedpng_sizeFinder: ' + $('.DD_belatedPNG_sizeFinder').attr("src"));

        // Perhaps reapplying 'zoom' css will reapply the BG values?
        $(this).css({ zoom: 0 }).css({ zoom: 1 });
        // Set values again.
        bg = $(this).css('background-image');
        bgAll = $(this).css('background');
        // No luck...same result as #test2
         $('#test4').html("post png fix: " + bg + "<br />bg: " + bgAll);
    });
});
于 2011-04-13T20:06:43.490 回答