Работя с 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, но не мисля, че ще работи за мен, за да намеря позиция на каретката (позиция на курсора) на contenteditable div.
може ли някой да има някаква работа за мен.
в примера по-долу моята позиция на курсора е между 't' и 'w' в ‹p›two‹/p› <div contenteditable="true"><p>one<br><b>t|wo</b></p></div>
предполагам, че имам нужда от номер 14 в примера по-горе, тъй като трябва да извърша някаква операция в в тази точка използвам този 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 в горния пример, тъй като трябва да извърша някаква операция в този момент, използвам този div с възможност за редактиране на съдържание, тъй като RichTextbox с моя персонализиран стил се прилага към него - person BrainCoder   schedule 31.05.2012