javascript – 如何在Internet Explorer中使用html子元素在contenteditable div中获取插入位置
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 如何在Internet Explorer中使用html子元素在contenteditable div中获取插入位置,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2099字,纯文字阅读大概需要3分钟。
内容图文
![javascript – 如何在Internet Explorer中使用html子元素在contenteditable div中获取插入位置](/upload/InfoBanner/zyjiaocheng/792/c10b3ca9a33649d1bbc8ebd22d44fe68.jpg)
我正在使用一个可信的div,它可以选择使用内联html元素,例如标签“< p>< font>< br>
“在文本流程中.
在某些点我需要获取contenteditable div的插入位置(光标位置),插入符号(光标)位于html子元素之后.
我正在使用javascript for Firefox中的以下代码,它可以正确找到contenteditable div的插入位置(光标位置),但我找不到任何解决方案,因为Internet Explorer找到插入位置(光标位置)为window.getSelection未定义.
function getCaretPosition() {
if (window.getSelection && window.getSelection().getRangeAt) {
var range = window.getSelection().getRangeAt(0);
var selectedObj = window.getSelection();
var rangeCount = 0;
var childNodes = selectedObj.anchorNode.parentNode.childNodes;
for (var i = 0; i < childNodes.length; i++) {
if (childNodes[i] == selectedObj.anchorNode) {
break;
}
if (childNodes[i].outerHTML)
rangeCount += childNodes[i].outerHTML.length;
else if (childNodes[i].nodeType == 3) {
rangeCount += childNodes[i].textContent.length;
}
}
return range.startOffset + rangeCount;
}
return -1;
}
我发现了document.selection;适用于Internet Expolrer,但我认为它不适合我找到contenteditable div的插入位置(光标位置).
任何人都可以为我做任何工作.
在下面的例子中,我的光标位置在< p>二< / p>中的’t’和’w’之间.
< div contenteditable =“true”>< p> one< br>< b> t | wo< / b>< / p>< / div>我想在上面的例子中需要14号,因为我需要在那一点上执行一些操作我使用这个contenteditable div作为RichTextbox我的自定义样式适用于它
解决方法:
您好我找到了Internet Explorer 8或更低版本的答案
var cursorPosition=0;
if (document.selection && document.selection.createRange) {
range = document.selection.createRange();
if (range.parentElement() == YourEditableControl) {
var tmpEle = document.createElement("span");
YourEditableControl.insertBefore(tmpEle, YourEditableControl.firstChild);
var tmpRange = range.duplicate();
tmpRange.moveToElementText(tmpEle);
tmpRange.setEndPoint("EndToEnd", range);
cursorPosition= tmpRange.text.length;
}
}
上面的代码解决了我的问题,找到IE8或以下版本的当前光标位置
因为window.getSelection()是为IE8或更低版本而设计的,并且适用于IE9
所以可以使用document.selection选择对象和范围对象来获取当前插入符号或光标位置形式contenteditable div或其他控件
我希望这个能帮上忙
内容总结
以上是互联网集市为您收集整理的javascript – 如何在Internet Explorer中使用html子元素在contenteditable div中获取插入位置全部内容,希望文章能够帮你解决javascript – 如何在Internet Explorer中使用html子元素在contenteditable div中获取插入位置所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。