2011-04-13 25 views
2

這有點令人發狂。我有一個代碼,它將當前選定元素的背景圖像保存到一個變量中,然後用它創建一個img標籤。如何使用IE6檢索元素的當前背景圖像值?

簡單地說,在我除了IE6測試所有的瀏覽器了以下工作:

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

從IE6的返回值是「無」,這是不正確。 (之前有人提出嘗試,而不是「背景圖像」,沒有骰子。「將backgroundImage」)

如何,我可以得到價值的任何想法?

更新:我忘了提,有問題的背景圖像是由DD_belatedPNG,現在似乎是罪魁禍首處理 - 如果我註釋掉修復,我得到我的價值。如果有人知道如何在png修復之後仍然可以獲取該值,請告訴我。

+0

你可以把你的代碼的jsfiddle? – Jaspero 2011-04-13 17:29:59

回答

0

經過在IE6中的一些測試後,我能夠用DD_belatedPNG和背景src重現您的問題。

這裏就是我發現。如果在調用DD_belatedPNG.fix('[selector]');之前設置background-image變量,那麼你得到期望的結果。如果你在一個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); 
    }); 
}); 
+0

移動PNG修復後的分配造成了一下胃灼熱的,但它是務實的解決方案(因爲我做網頁上的一些PNG修復)。非常感謝! – mattucf 2011-04-13 22:02:10

0
  1. 你試過background
  2. 你確定該元素是正確的?
+0

是的,是的。在我嘗試過的所有其他瀏覽器(IE7-8,FF,misc webkit)中返回適當的background-image值。在IE6中,css('background')返回undefined。 – mattucf 2011-04-13 18:44:02

+0

你能提供演示嗎? – 2011-04-13 18:51:43

+0

我想我只是想通了。 DD_belatedPNG似乎是罪魁禍首,我忽略認爲它可能是相關的。現在找出png修復程序隱藏我的數據的位置。 :) – mattucf 2011-04-13 19:02:13