如何使用Javascript在浏览器的可编辑内容窗口中找到光标处的DOM节点?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何使用Javascript在浏览器的可编辑内容窗口中找到光标处的DOM节点?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1448字,纯文字阅读大概需要3分钟。
内容图文
我正在寻找一种跨浏览器的解决方案,即IE,Firefox和Safari.
解决方法:
通过“可编辑的内容窗口”,我将假设您的意思是打开了contenteditable的元素或者打开了designMode的文档.
还有两种情况需要考虑:用户进行选择的情况和只有插入符号的情况.下面的代码将适用于这两种情况,并将为您提供完全包含选择的最内层元素.如果选择完全包含在文本节点中,那么在IE中获取该文本节点(在其他浏览器中是微不足道的)有点复杂,所以我没有在这里提供该代码.如果你需要它,我可以把它挖出来.
function getSelectionContainerElement() {
var range, sel, container;
if (document.selection && document.selection.createRange) {
// IE case
range = document.selection.createRange();
return range.parentElement();
} else if (window.getSelection) {
sel = window.getSelection();
if (sel.getRangeAt) {
if (sel.rangeCount > 0) {
range = sel.getRangeAt(0);
}
} else {
// Old WebKit selection object has no getRangeAt, so
// create a range from other selection properties
range = document.createRange();
range.setStart(sel.anchorNode, sel.anchorOffset);
range.setEnd(sel.focusNode, sel.focusOffset);
// Handle the case when the selection was selected backwards (from the end to the start in the document)
if (range.collapsed !== sel.isCollapsed) {
range.setStart(sel.focusNode, sel.focusOffset);
range.setEnd(sel.anchorNode, sel.anchorOffset);
}
}
if (range) {
container = range.commonAncestorContainer;
// Check if the container is a text node and return its parent if so
return container.nodeType === 3 ? container.parentNode : container;
}
}
}
内容总结
以上是互联网集市为您收集整理的如何使用Javascript在浏览器的可编辑内容窗口中找到光标处的DOM节点?全部内容,希望文章能够帮你解决如何使用Javascript在浏览器的可编辑内容窗口中找到光标处的DOM节点?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。