Estoy tratando de insertar un emoji en el área editable de contenido. Pero cada vez que intento insertar, se inserta al comienzo de la línea.
estoy usando
aquí está mi ejemplo de código
jQuery(document).on('click', 'a.fg-emoji-picker-item', function(){ var emoji = jQuery(this).attr('href'); var el = jQuery('.advanced-th-bp-activity-form'); el.focus(); pasteHTMLAtCaret(emoji); });
y la función pasteHTMLAtCaret es
function pasteHTMLAtCaret(html, selectPastedContent) { var sel, range; if (window.getSelection) { sel = window.getSelection(); if (sel.getRangeAt && sel.rangeCount) { range = sel.getRangeAt(0); range.deleteContents(); var el = document.createElement("div"); el.innerHTML = html; var frag = document.createDocumentFragment(), node, lastNode; console.log(frag); while ( (node = el.firstChild) ) { lastNode = frag.appendChild(node); } var firstNode = frag.firstChild; range.insertNode(frag); if (lastNode) { range = range.cloneRange(); range.setStartAfter(lastNode); if (selectPastedContent) { range.setStartBefore(firstNode); } else { range.collapse(true); } sel.removeAllRanges(); sel.addRange(range); } } } else if ( (sel = document.selection) && sel.type != "Control") { var originalRange = sel.createRange(); originalRange.collapse(true); sel.createRange().pasteHTML(html); if (selectPastedContent) { range = sel.createRange(); range.setEndPoint("StartToStart", originalRange); range.select(); } } }
Mire, los emojis se insertan en el primero, aunque esos emojis se ingresaron después del texto.