2

我正在尝试删除一个空/挂起的列表项,如果用户在剩下的情况下将注意力集中在编辑器之外(例如,如果用户将光标留在内部li并在编辑器外部单击,

  1. 这是我的清单项目
  2. 这是我的另一个列表项。

……“3”。列表项应该被删除)

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

这在我的隔离测试环境中运行良好,但在实际应用程序中使用时,tinymce.activeEditor.selection.getNode()它返回一个不同的节点(实际上是一个完全在编辑器之外的节点),我终生无法弄清楚原因。也许在我的 onBlur 事件处理程序触发之前,TinyMCE 内部的某些东西正在更改“活动节点”,或者类似的东西。

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

4

1 回答 1

2

我认为 getNode() 获取父节点。你必须通过孩子搜索。我发现 getContent 给了我有关我选择的节点的信息(a 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;
       }

}
于 2013-12-11T16:18:41.227 回答