2014-04-03 41 views
8

我想將一些數據追加到HTML元素,所以我用下面的代碼:Window.getComputedStyle沒有實現界面元素的錯誤在Firefox

$("#bookListDiv").append(data.HTMLString); 

,一切都已經工作,但隨後我想補充一個淡入動畫顯示此元素,所以我已經將它修改爲:

$(data.HTMLString).hide().appendTo("#bookListDiv").fadeIn(1000); 

動畫正在Chrome,但在Firefox我看到控制檯以下錯誤: 類型錯誤:參數1 Window.getComputedStyle沒有實現接口Elem ENT。 我正在使用jquery 1.8.2。

你能告訴我什麼是錯的嗎?我假設有數據,但在第一種方法中,一切正常。

+0

在控制檯中嘗試getComputedStyle(document.createElement('div'))',結果如何?使用哪個版本的Firefox? – raina77ow

+0

信息的關鍵位似乎在'data.HTMLString'的值中。 –

+1

我想我可能知道這個問題,但不想坐在這裏猜。當提問時,提供重現問題所需的所有相關信息。 –

回答

1

我在fadeIn函數之前添加了延遲找到了解決方案。更改後 代碼:

$(data.HTMLString).hide().appendTo("#bookListDiv").delay(100).fadeIn(1000); 

正如我注意到,在延遲數應調整數據的大小,在我的情況下,它正在7KB JSON數據,但我從1000開始。

1

這個問題在jQuery中不會出現問題:http://bugs.jquery.com/ticket/12462

解決方法是在將HTML提供給jQuery之前,將其封裝在一個元素中。

+7

在將它提供給jQuery之前,將HTML包裝到單個元素中意味着什麼?你有可以在代碼中顯示的例子嗎? – derekshull

0

請確保您使用正確的標記語法。

我使用AngularJS動態更改禁用的按鈕狀態,同時隱藏/顯示按鈕......這使Firefox與「Window.getComputedStyle不實現接口元素」錯誤(但Safari /鉻/ IE)。

在我的情況下,真正的問題是,我是有工作的標記沒有匹配的開啓/關閉標籤:<button ng-disabled="!x">Click</div>

一旦修正:<button ng-disabled="!x">Click</button>事情都很好。

奇怪的是,無論是以前的答案是部分的解決方案,但:包裝一$超時在我隱藏/顯示作爲第一貼出答案提出的工作(但延遲必須是一個大量的)和一個額外的元素包裹的元素工作得很好,但不是我需要的實現(並創建了其他問題)。

我試過了,但根本無法得到一個代碼示例工作來重現此問題。

2

如果您致電getComputedStyle<html>,您也可以獲得此信息。這應該是常識,但我有一個遞歸函數,它使用此函數從內部元素冒泡並在文檔根結束時發出錯誤。

相關問題