微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript / WYSIWYG parentElement返回div而不是p元素

如何解决javascript / WYSIWYG parentElement返回div而不是p元素

|| 我正在尝试使用contentEditable = true用javascript构建WYSIWYG编辑器。我遇到的问题是在IE document.selection.createrange()。parentElement()返回的情况下,contenteditable设置为true。为了更容易理解,我将举一个例子:
<div contenteditable=\"true\">
   <p>lorem ip|sum dolor</p>
</div>
在此示例中, \代表插入号。在Chrome中,当我使用commonAncestorContainer时,在此示例中,返回元素为p,而在IE中,parentElement返回容器div。以我的理解,浏览器忽略了这些元素,因此我无法弄清楚焦点是什么元素。我不会问“是否有办法”,因为我已经看到了很好的所见即所得的编辑器,因此我的问题是在这个示例中如何获得“真实的”父元素? :) 顺便说一句,因为我是新用户,所以我无法创建标签。我相信\“ parentElement \”将是解决此问题的好方法。     

解决方法

DOM
Range
\的
commonAncestorContainer
TextRange
\的
parentElement()
略有不同:
commonAncestorContainer
返回包含整个范围的最深节点(可以是文本节点),而
parentElement()
返回包含整个TextRange的最深元素。在您的示例中,
commonAncestorContainer
将是文本节点\“ lorem ipsum dolor \”,而
parentElement()
将返回the9ѭ元素。如果那是您想要的,则可以使用Range通过检查
commonAncestorContainer
的nodeType来实现:
var containerElement = range.commonAncestorContainer;
if (containerElement.nodeType == 3) {
    containerElement = containerElement.parentNode;
}
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。