tinymce.dom.replace引发有关parentNode的异常

tinymce.dom.replace引发有关parentNode的异常,dom,replace,tinymce,Dom,Replace,Tinymce,我正在编写一个tinyMce插件,其中包含一段代码,用一个元素替换另一个元素。我使用编辑器的dom实例创建要插入的节点,并使用相同的实例进行替换 我的代码如下: var nodeData = { "data-widgetId": data.widget.widgetKey(), "data-instanceKey": "instance1", src: "/content/images/icon48/cog.png", class: "widgetPlaceh

我正在编写一个tinyMce插件,其中包含一段代码,用一个元素替换另一个元素。我使用编辑器的dom实例创建要插入的节点,并使用相同的实例进行替换

我的代码如下:

var nodeData = { "data-widgetId": data.widget.widgetKey(), "data-instanceKey": "instance1", src: "/content/images/icon48/cog.png", class: "widgetPlaceholder", title: data.widget.getInfo().name }; var nodeToInsert = ed.dom.create("img", nodeData); // Insert this content into the editor window if (data.mode == 'add') { tinymce.DOM.add(ed.getBody(), nodeToInsert); } else if (data.mode == 'edit' && data.selected != null) { var instanceKey = $(data.selected).attr("data-instancekey"); var elementToReplace = tinymce.DOM.select("[data-instancekey=" + instanceKey + "]"); if (elementToReplace.length === 1) { ed.dom.replace(elementToReplace[0], nodeToInsert); } else { throw new "No element to replace with that instance key"; } } 诺德塔塔变种= { “data widgetId”:data.widget.widgetKey(), “数据实例密钥”:“实例1”, src:“/content/images/icon48/cog.png”, 类:“widgetPlaceholder”, 标题:data.widget.getInfo().name }; var nodeToInsert=ed.dom.create(“img”,nodeData); //将此内容插入编辑器窗口 如果(data.mode==“添加”){ tinymce.DOM.add(ed.getBody(),nodeToInsert); } else if(data.mode=='edit'&&data.selected!=null){ var instanceKey=$(data.selected).attr(“数据instanceKey”); var elementToReplace=tinymce.DOM.select(“[data instancekey=“+instancekey+”]); if(elementToReplace.length==1){ ed.dom.replace(elementToReplace[0],nodeToInsert); } 否则{ 抛出新的“没有要替换为该实例键的元素”; } } TinyMCE在更换过程中断裂,如下所示:

replace : function(n, o, k) { var t = this; if (is(o, 'array')) n = n.cloneNode(true); return t.run(o, function(o) { if (k) { each(tinymce.grep(o.childNodes), function(c) { n.appendChild(c); }); } return o.parentNode.replaceChild(n, o); }); }, 替换:功能(n、o、k){ var t=这个; if(是(o,'数组')) n=n.cloneNode(真); 返回t.run(o),函数(o){ 如果(k){ 每个(tinymce.grep(o.childNodes),函数(c){ n、 儿童(c); }); } 返回o.parentNode.replaceChild(n,o); }); }, …出现错误
时,无法调用null的方法“replaceChild”

我已经验证了传递到
replace()
的两个参数不为null,并且它们的
parentNode
字段已实例化。我还注意确保使用相同的文档实例创建和替换元素(我理解IE对此有问题)

我在Google Chrome上完成了所有这些开发,但在Firefox4和IE8上也收到了同样的错误。还有其他人见过这个吗


事先谢谢

事实证明,我只是按错误的顺序传递了参数。我应该先传递要插入的节点,然后再传递要替换的节点。

事实证明,我只是以错误的顺序传递了参数。我应该先传递我要插入的节点,然后传递我要替换的节点。

什么是“console.log(o,o.parent,n);“屈服于放置在”return o.parentNode.replaceChild(n,o);“?什么是“console.log(o,o.parent,n);“屈服于放置在”return o.parentNode.replaceChild(n,o);“?