2011-10-31 84 views
0

我有一個腳本,它將新創建的div附加到正文元素onload上。我需要在整個應用程序中保留對該div的引用,所以我將它存儲在我的主要全局對象中。添加創建爲對象屬性的元素

var oMyObj = {}; 

window.onload = function() { 
    oMyObj.eDiv = document.createElement("div"); 
    document.getElementsByTagName("body")[0].appendChild(oMyObj.eDiv); 
}; 

沒有什麼特別突破性的,我相信你會同意的。無論如何,它直到我開始在IE9中測試時才工作得很好。突然間,我收到一條錯誤消息,說「我現在在日本工作」,這種翻譯爲「對象調用無效/無效」。不確定錯誤消息的英文版本是什麼。

無論如何,我搜索並找到(http://d.hatena.ne.jp/wang-zhi/20110503/1304361114 - 對不起,也是日語),它是由於 RealPlayer DivX插件。禁用插件後,它工作正常。如果我使用元標記強制IE9以IE7的形式運行,它也可以正常工作。所以這不是一個大問題。但我想知道是否有一個「正確」的方式來做我想做的事情,以便它能夠在IE9中以IE9的方式工作。我只能假設我現在所做的並不是我應該做的。

任何想法?

+0

我看不出有什麼問題。 – Pointy

+0

在onload之前是否可以引用oMyObj.eDiv?錯誤發生時oMyObj的值是多少?換句話說:它是oMyObj還是oMyObj.eDiv是空的? –

+0

如果將'var oMyObj'和'oMyObj'更改爲'window.oMyObj',結果是否相同?這樣你將確保它實際上是全球性的。 – bennedich

回答

0

好吧,我確認它是DivX(不是RealPlayer;不知道爲什麼我將它們混合起來)插件導致問題。該插件覆蓋了一些核心的DOM功能,包括appendChild,這對我來說似乎很瘋狂,但無論如何。 DivX acknowledged的錯誤,顯然是要在下次更新中修復它。耶,我猜。