Selection og Range i IE
Hej Eksperter.Jeg er i gang med at lave en teksteditor i JavaScript og har fundet lidt kode til at indsætte en Node, hvor man har markeret teksten.
Koden er:
-----------------------------------------------------
function insertNodeAtSelection(win,insertNode){
if(ie){
var sel=win.document.selection;
var range=sel.selectionStart;
}else{
var sel=win.getSelection();
var range=sel.getRangeAt(0);
}
sel.removeAllRanges();
range.deleteContents();
var container=range.startContainer;
var pos=range.startOffset;
range=document.createRange();
if (container.nodeType==3&&insertNode.nodeType==3) {
container.insertData(pos, insertNode.nodeValue);
range.setEnd(container, pos+insertNode.length);
range.setStart(container, pos+insertNode.length);
} else {
var afterNode;
if (container.nodeType==3) {
var textNode = container;
container = textNode.parentNode;
var text = textNode.nodeValue;
var textBefore = text.substr(0,pos);
var textAfter = text.substr(pos);
var beforeNode = document.createTextNode(textBefore);
afterNode = document.createTextNode(textAfter);
container.insertBefore(afterNode, textNode);
container.insertBefore(insertNode, afterNode);
container.insertBefore(beforeNode, insertNode);
container.removeChild(textNode);
} else {
afterNode = container.childNodes[pos];
container.insertBefore(insertNode, afterNode);
}
range.setEnd(afterNode, 0);
range.setStart(afterNode, 0);
}
sel.addRange(range);
}
-----------------------------------------------------
Dette virker fint i Firefox. I IE får jeg fejlen "Objektet understøtter ikke denne egenskab eller metode". Fejlmeddelelsen henviser til:
sel.removeAllRanges();
range.deleteContents();
Variablen "win" indeholder i øvrigt "document.getElementById("wysiwyg").contentWindow" og "insertNode" indeholder table-elementet, som skal oprettes. Dette element kan i øvrigt sagtens oprettes, når jeg bare bruger appendChild, og altså ikke noget med selection.
Håber I kan hjælpe!
