我有以下代码,可以在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不支持这种方法以及其他浏览器吗?
由于
答案 0 :(得分:4)
我没有解决这个问题,而是弄清楚我的代码出了什么问题:
我使用的是一个广泛的框架集(哎呀!!)当我进行text_node = document.createTextNode()
调用时,我没有在我的应用程序所在的框架中执行此操作。
我通过显式调用框来创建对象来修复它:
var text_node = MainFrame.child_frame.WhySoManyFrames.document.createTextNode(p1);
执行此操作后,insertBefore
方法完美无缺!
希望这有助于任何人看到这个问题 - 我知道这花了我很长时间并且很多挫折要弄明白!
答案 1 :(得分:1)
IE7支持JavaScript“InsertBefore”功能。请记住,只有在页面完全加载时才能使用此功能!