2009-11-27 64 views
0

我在Internet Explorer 8中發現了一個奇怪的錯誤。也許有人可以幫助我移動它。IE8在getStyle背景位置崩潰

當我嘗試抓取元素的背景位置時,使用background-position-x所有版本的Internet Explorer都可以工作,但IE8會崩潰

當我運行el.getStyle('background-position')時,除IE(6,7和8)返回undefined以外,所有瀏覽器都給我正確的值。

因此,我對所有IE版本都使用el.getStyle('background-position-x')

但是,IE8在上述代碼中崩潰。

任何人都有類似的問題?

+0

您是否在調用函數之前檢查el是否爲空?我曾有過其他瀏覽器中未初始化對象的實例,而不是IE。 – theraneman 2009-11-27 11:25:16

+0

感謝您的投入!它確實是一個mootools/ie錯誤。你必須使用內聯樣式。閱讀我的答案吼叫。 – Frankie 2009-11-27 11:47:26

回答

2

感謝大家的幫助。這確實是一個錯誤,僅適用於以下場景。

  1. CSS必須在外部樣式表加載
  2. 元素沒有內嵌樣式

解決它的辦法,甚至強硬的髒,是聯樣式添加的元素。使IE8開心並且所有其他瀏覽器都能正常工作。

我沒有測試,但根據to this ticket,FF2也遭受同樣的行爲。

旁註:
@marcgg - 我要去downvote你的答案,因爲它確實是沒有幫助的(和必然要開始火焰戰爭),但是,所有的真理說,jQuery的不顯示這個問題。儘管你可能已經知道,但這不是一種選擇! ;)

@Fabien - IE支持background-position-x,並且W3C認可的構造對background-position缺乏支持。

+0

這是很有用的知道,雖然我最近做了一個精靈動畫,讀取這個塊的元素與外部樣式表和mootools,並沒有這樣的問題。也許我很幸運;) – 2009-11-27 15:44:16

+0

@Dimitar,也許你在抓取它之前通過JavaScript設置CSS。這樣IE瀏覽器工作正常。在我的構造上,我必須在將其設置爲新值之前閱讀背景位置。那是casa嗎? – Frankie 2009-11-27 16:46:01

+0

是的,它的一個元素通過新元素和一個有效的初始值完全構建到DOM中。但是,隨後的變化是在閱讀之後。 。 現在你提到它,IE中有一些奇怪的解決方法就是這樣 - 例如,將元素轉換爲內聯內溢出:隱藏層,當你想要塊可以令人沮喪... – 2009-11-27 22:08:06

0

爲什麼不使用jquery's css function工作良好的crossbrowser?

+0

你建議使用一個小型css()函數的整個庫? – James 2009-11-27 11:27:04

+1

他已經在使用MooTools ...所以使用JQuery將毫無意義。 – James 2009-11-27 11:27:49

+0

MooTools或PrototypeJS;) IE不支持background-position-x – 2009-11-27 11:35:11

0

嘗試使用:

el.getStyle('backgroundPositionX') 

el.getStyle('backgroundPositionX') 
+0

試圖出於好奇,但他們會仍然崩潰IE8。走線的方式就像骯髒的內聯式樣。 – Frankie 2009-11-27 11:56:20

0

是,舊的線程,但想我會發布另一個解決方案,我碰上@ mootools的燈塔....

if (Browser.Engine.trident){ 
    var xy = el.getStyle('background-position-x')+" "+el.getStyle('background-position-y'); 
} else { 
    var xy = el.getStyle("backgroundPosition"); 
} 

到目前爲止效果不錯。