javascript - selection.createRange()

ruslan

Member
Под IE работает без проблем следующее:

txt = editor.document.selection.createRange();
txt.text = "Bla-bla-bla";

Для Opera, FireFox, Safari:

txt = editor.window.getSelection();

Содержимое получаем без проблем, НО заменить выделение не получаеться. Что не так?

Для справки: editor - iframe; editor.document.designMode = 'On';
 

FEOFAN

http://feofan.com
Держи. Писал ее давно, 100% работала в ИЕ и в ФФ. Щас уже не помню что как работает и почему так написано)))
По-моему вставляла текст в позиции курсора(елси был выделен текст, то заменяла его)
function insertAtCursor(myFieldName, myValue)
{
myField = document.getElementById('_fieldname_editor').contentWindow;
if(checkIt('msie')) {

myField.focus(myField);
sel = ierng;//You can find ierng in center.html in function my_ie_oncontext()
sel.text = myValue;
sel.collapse(true);
sel.select();
}
else
{
var edtr = document.getElementById('_fieldname_editor').contentWindow;
var sel = _getSelection();
var range = _createRange(sel);
var node = range.startContainer;
var pos = range.startOffset;
if (pos != 0) {
sel.removeAllRanges();
range.deleteContents();
newNode = edtr.document.createElement("span");
newNode.appendChild(edtr.document.createTextNode(myValue));
range.insertNode(newNode);
}
}
}


function _getSelection () {
return document.getElementById('_fieldname_editor').contentWindow.getSelection();
}

function _createRange (sel) {
document.getElementById('_fieldname_editor').contentWindow.focus();
if (typeof sel != "undefined") {
try {
return sel.getRangeAt(0);
} catch(e) {
return document.getElementById('_fieldname_editor').contentWindow.document.createRange();
}
} else {
return document.getElementById('_fieldname_editor').contentWindow.document.createRange();
}

}
 
A

AkeL.php

Guest
+

 

ruslan

Member
Відповідь: javascript - selection.createRange()

Вот накопал - работает:

selection = editor.window.getSelection();
range = selection.getRangeAt(0);
selection.removeRange(range);
link = editor.document.createElement("a");
link.href = 'http://google.com';
link.appendChild(range.extractContents());
range.insertNode(link);
 
Зверху