Получение позиции курсора в div
Всем привет.
Есть див с contenteditable=true и необходимо добавить возможность вставки смайликов. Полазив по интернету нашел вот такое решение: function getCaretPos(element) { element.focus(); if (document.selection) { var sel = document.selection.createRange(); var clone = sel.duplicate(); sel.collapse(true); clone.moveToElementText(element); clone.setEndPoint('EndToEnd', sel); return clone.text.length; } else { return window.getSelection().getRangeAt(0).startOffset; } return 0; } И вроде бы работает, но позиция курсора возвращается без учета html кода, так же нужно и изменять положение курсора после вставки кода. Может кто-нибудь уже сталкивался с этой задачей и имеются наработки? |
Вот, нашел на просторах интернета, вроде работает
function insertNodeOverSelection(node, containerNode) { var sel, range, html; if (window.getSelection) { sel = window.getSelection(); if (sel.getRangeAt && sel.rangeCount) { range = sel.getRangeAt(0); if (isOrContainsNode(containerNode, range.commonAncestorContainer)) { range.deleteContents(); range.insertNode(node); range = range.cloneRange(); range.setStartAfter(node); range.collapse(true); sel.removeAllRanges(); sel.addRange(range); } else { containerNode.appendChild(node); } } } else if (document.selection && document.selection.createRange) { range = document.selection.createRange(); if (isOrContainsNode(containerNode, range.parentElement())) { html = (node.nodeType == 3) ? node.data : node.outerHTML; range.pasteHTML(html); } else { containerNode.appendChild(node); } } } |
vanicon,
Цитата:
Демо |
рони, Спасибо, не натыкался почему-то на эту статью
|
Часовой пояс GMT +3, время: 00:15. |