【问题标题】:tinymce.dom.replace throws an exception concerning parentNodetinymce.dom.replace 引发有关 parentNode 的异常
【发布时间】:2023-03-13 02:35:02
【问题描述】:

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

我的代码如下:

var 节点数据 = { “data-widgetId”:data.widget.widgetKey(), "data-instanceKey": "instance1", src: "/content/images/icon48/cog.png", 类:“widgetPlaceholder”, 标题:data.widget.getInfo().name }; var nodeToInsert = ed.dom.create("img", nodeData); // 将此内容插入编辑器窗口 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); } 别的 { 抛出新的“没有元素可以用该实例键替换”; } }

TinyMCE 在替换过程中中断,这里:

替换:函数(n,o,k){ 变量 t = 这个; if (is(o, 'array')) n = n.cloneNode(true); 返回 t.run(o, 函数(o) { 如果(k){ 每个(tinymce.grep(o.childNodes),函数(c){ n.appendChild(c); }); } return o.parentNode.replaceChild(n, o); }); },

..出现错误Cannot call method 'replaceChild' of null

我已验证传入replace() 的两个参数不为空,并且它们的parentNode 字段已实例化。我还注意确保使用相同的文档实例创建和替换元素(我知道 I.E 对此有问题)。

我在 Google Chrome 中完成了所有这些开发,但我在 Firefox 4 和 IE8 中也收到了同样的错误。有没有其他人遇到过这个?

提前致谢

【问题讨论】:

  • 什么是“console.log(o,o.parent,n);” yield 放在“return o.parentNode.replaceChild(n, o);”之前?

标签: dom replace tinymce


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2013-10-22
    • 2020-07-24
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 2012-05-20
    • 2017-04-05
    • 2014-10-25
    相关资源
    最近更新 更多