Я работаю с contenteditable div, у которого будет возможность иметь встроенные элементы html, такие как теги «‹p› ‹font› ‹br›» в текстовом потоке.
В определенные моменты мне нужно захватить позицию каретки (положение курсора) contenteditable div, каретка (курсор) находится после дочернего элемента html.
я использую следующий код в javascript для 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, но я не думаю, что мне удастся найти позицию каретки (положение курсора) редактируемого элемента div.
может у кого-нибудь есть какая-нибудь работа для меня.
в приведенном ниже примере моя позиция курсора находится между 't' и 'w' в ‹p›two‹/p› <div contenteditable="true"><p>one<br><b>t|wo</b></p></div>
я полагаю, что в приведенном выше примере мне нужно число 14, так как мне нужно выполнить некоторую операцию в в этот момент я использую этот contenteditable div, поскольку RichTextbox с моим собственным стилем применяется к нему
<div contenteditable="true"> <br/> <p>some text</p> <br/> <font>some text</font> <p>current cusrsor position here</p> <br/> <p>some text</p> </div>
- person BrainCoder   schedule 31.05.2012<div contenteditable="true"><p>one<br><b>t|wo</b></p></div>
- person Tim Down   schedule 31.05.2012<div contenteditable="true"><p>one<br><b>t|wo</b></p></div>
я полагаю, что в приведенном выше примере мне нужен номер 14, так как мне нужно выполнить некоторую операцию в этот момент, я использую этот contenteditable div, поскольку RichTextbox с моим собственным стилем применяется к нему - person BrainCoder   schedule 31.05.2012