【问题标题】:Does IE7 not fully support javascript's insertBefore method?IE7 不完全支持 javascript 的 insertBefore 方法吗?
【发布时间】:2011-03-02 19:14:08
【问题描述】:

我有以下在 Chrome、IE8 和 FF 中完美运行的代码。但是,当我用 IE7 测试它时,我得到一个错误。有人知道这里发生了什么吗?

 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 只是不支持这种方法以及其他浏览器?

谢谢

【问题讨论】:

  • 根据MS,IE6+应该支持insertBefore。 msdn.microsoft.com/en-us/library/ms536454(v=vs.85).aspx有没有看到他们的评论:“插入第一个子节点时不要指定oChildNode参数。如果子节点已经存在,而你没有指定oChildNode参数,则oNewNode成为父对象的最后一个子节点。”跨度>

标签: javascript internet-explorer-7 ie7.js


【解决方案1】:

我没有解决这个问题,而是弄清楚我的代码出了什么问题:

我使用了一个扩展框架集(糟糕!!),当我调用 text_node = document.createTextNode() 时,我并没有在我的应用程序所在的框架中执行此操作。

我通过显式调用框架以在其中创建对象来解决此问题:

var text_node = MainFrame.child_frame.WhySoManyFrames.document.createTextNode(p1);

完成此操作后,insertBefore 方法完美运行!

希望这可以帮助任何看到这个问题的人 - 我知道这花了我很长时间和很多挫折才弄清楚!

【讨论】:

    【解决方案2】:

    IE7 支持 JavaScript 'InsertBefore' 功能。请记住,您必须仅在页面完全加载时使用此功能

    Details

    【讨论】:

    • 这是一个很好的建议——我尝试将调用出错函数的代码放入主体 onload() 调用中,以确保在加载所有内容后调用它。问题还是发生了。我正在尝试将问题提炼成一个简单的网页。不过感谢您的回复!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-02
    • 1970-01-01
    • 2018-01-18
    • 2011-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多