1

我在运行时向 tinymce 文档添加跨度。

ed.onKeyUp.add(function (ed, e) {
   sendText(ed, e);
   ed = tinyMCE.get('editor');
   range = ed.selection.getRng();

   var newNode = ed.getDoc().createElement("span");
   newNode.id = "caret";
   ed.getDoc().body.appendChild(newNode);

   newNode.innerHTML = "|";
   newNode.style.color = "black";
   range.insertNode(newNode);
});

如您所见,我正在使用 createElement 方法添加节点,并通过使用 append child 将其添加到 DOM 到我想要的元素。

问题是我无法使用以下方法找到新添加的元素:

document.getElementById("caret");

它返回空值。为什么会这样?知道我能做什么吗?

编辑:我正在使用 document.getElementById("caret"); 在初始化 tinyMCE 文档时调用的函数中,因为我需要此函数来闪烁自定义插入符号。

这是功能:

function blink() {
        var caret = document.getElementById("caret");

        if (caret.style.color == "transparent") {
            caret.style.color = "black"
        } else {
            caret.style.color = "transparent";
        }
    }

我称它为 oninit: setInterval("blink()", 700) 其中 oninit 是 tinyMCE 的参数。

4

1 回答 1

3

TinyMCE 使用包含自己的文档的 iframe 来允许编辑。

因此,当您使用 时document.getElementById,您正在搜索错误的 DOM。

如果您有权访问 TinyMCE 编辑器对象,则可以ed.getDoc().getElementById()改用。

如果您需要全局访问,您可以使用TinyMCE.editors集合来访问特定的编辑器。

于 2013-03-16T16:51:17.177 回答