TinyMCE - 如何可靠地获取在模糊事件之前选择的节点?

时间:2013-05-15 13:03:49

标签: javascript tinymce

我正在尝试删除一个空的/挂起的列表项,如果用户在剩下一个时聚焦在编辑器之外(例如,如果用户将光标留在li内并点击编辑器外部,

  1. 这是我的列表项
  2. 这是我的另一个清单项目。
  3. ......“3”列表项应该删除)

    我为onBlur事件编写了一个事件处理程序,它可以解决问题。它会检查tinymce.activeEditor.selection.getNode()以查看它是否为li节点,如果它不包含任何内容,则会将其删除。

    这在我的隔离测试环境中运行良好,但在实际应用程序中使用时,tinymce.activeEditor.selection.getNode()正在返回一个不同的节点(实际上是一个OUTSIDE编辑器),我不能为我的生活找出原因。也许TinyMCE内部的东西在我的onBlur事件处理程序触发之前改变了“主动节点”,或类似的东西。

    有人有什么想法/建议吗?我真的很难过。

1 个答案:

答案 0 :(得分:2)

我认为getNode()获取父节点。你必须搜索孩子们。 我发现getContent给了我关于我选择的节点(一个href)的信息

我确实找到了这个搜索代码,但我必须弄清楚我将如何确认选择哪个孩子。

myParentNode = ed.selection.getNode();
if (myParentNode.nodeName.toLowerCase() == 'a')
{
     ed.dom.remove(myParentNode);
 }
 else
 {
      var child = myParentNode.firstChild;

      while (child)
      {
           if (child.nodeName.toLowerCase() == 'a')
           {
                ed.dom.remove(child);
            }
            child = child.nextSibling;
       }

}