Indsæt HTML-kode ved tekstmarkøren i et contentEditable HTML-element‏
Jeg er i gang med at lave en mini HTML editor med HTML5-attributten contentEditable og jeg har derfor brug for at kunne indsætte HTML-kode der hvor tekstmarkøren er via javascript.Så man kan indsætte ting som billeder, lyd og video i mini HTML editoren.
Jeg har søgt lidt rundt på internettet og har fundet dette: https://stackoverflow.com/questions/4834793/
Der står der:
if (typeof window.getSelection != "undefined") {
var sel = window.getSelection();
if (sel.rangeCount) {
var range = sel.getRangeAt(0);
range.collapse(false);
range.insertNode(node);
range = range.cloneRange();
range.selectNodeContents(node);
range.collapse(false);
sel.removeAllRanges();
sel.addRange(range);
}
} else if (typeof document.selection != "undefined" && document.selection.type != "Control") {
var html = (node.nodeType == 1) ? node.outerHTML : node.data;
var id = "marker_" + ("" + Math.random()).slice(2);
html += '<span id="' + id + '"></span>';
var textRange = document.selection.createRange();
textRange.collapse(false);
textRange.pasteHTML(html);
var markerSpan = document.getElementById(id);
textRange.moveToElementText(markerSpan);
textRange.select();
markerSpan.parentNode.removeChild(markerSpan);
}
}
Den første metode virker i Google Chrome og Firefox, men kan kun indsætte tekst.
Den anden metode ser ud til at kunne indsætte HTML-kode, men den virker ikke i Google Chrome og Firefox.
Så jeg vil gerne høre om der overhovedet er native funktioner til dette i Google Chrome og Firefox.
Kan det lad sig gøre?