2011-03-02 49 views
4

我有下面的代碼,它可以在Chrome,IE8和FF中完美工作。但是,當我使用IE7測試時出現錯誤。有人知道這裏發生了什麼嗎?IE7不完全支持JavaScript的insertBefore方法嗎?

function do_replace(s, p1,p2,p3,child_node,syn_text) { 
     reg = new RegExp('[h\|H][1-7]'); 
    if(p1.length>0){ //this might not be necessary 
    //create textnode 
     var text_node = document.createTextNode(p1); 
      child_node.parentNode.insertBefore(text_node,child_node); //errors out here in IE7 
     } 

代碼錯誤在最後一行IE7給出一個「htmlfile:無效的參數」。當我通過調試器查看代碼時發生錯誤。 child_node,parentNode和text_node在運行此腳本時似乎與Firefox和Chrome相同。

任何想法?或者IE7不支持這種方法以及其他瀏覽器?

謝謝

+0

根據MS,IE6 +應該支持insertBefore。 http://msdn.microsoft.com/en-us/library/ms536454(v=vs.85).aspx您是否看到過他們的評論:「插入第一個子節點時,不要指定oChildNode參數。如果子節點已經存在並且您不指定oChildNode參數,則oNewNode將成爲父對象的最後一個子項。「 – Detect 2011-03-02 19:21:15

回答

3

而不是離開這個問題沒有解決,我想通了,什麼是錯我的代碼:

我用的是一個廣泛的框架(呸!),當我做了text_node = document.createTextNode()電話,我。

var text_node = MainFrame.child_frame.WhySoManyFrames.document.createTextNode(p1); 
:在我的應用程序是在框架中並沒有這樣做

我通過顯式調用從框架中創建對象解決了這個

完成此操作後,insertBefore方法完美無缺!

希望這可以幫助任何人看這個問題 - 我知道這花了我很長時間,很多挫折找出!

1

JavaScript'InsertBefore'功能被IE7支持。請記住,您必須僅在頁面完全加載時使用此功能

Details

+0

這是一個很好的建議 - 我試着把調用函數的代碼放在一個正文onload()調用中,只是爲了確保在加載完所有內容後調用它。問題仍然發生。我正在試圖將問題提煉成簡單的網頁。感謝您的回覆! – user210099 2011-03-02 21:11:25