[Range] surroundContents
Проблема в следующем.
К примеру, выделяю слово и оборачиваю его тегом. ![]() Получаю ![]() Выделяю ![]() Получаю ![]() Выделяю ![]() Ничего не получаю ![]() Как лечить?:help: Код:
//rng объект Range
rng.surroundContents(document.createElement("b"));
|
Попробуй span. И не плохо бы полный код примера.
|
Цитата:
|
Цитата:
<iframe src="text.html" frameborder="3"></iframe> <span id='magic'>Magic</span> Содержимое text.html <div contenteditable="true">Текст текст и еще текст</div> Ну сам скрипт
document.getElementById('magic').onclick = getAndEdit;
function getAndEdit(){
var rng = window.frames[0].document.getSelection().getRangeAt(0);
rng.surroundContents(document.createElement("span"));
}
|
А попробуй сделать rng.setStartBefore(rng.startContainer) и rng.setEndAfter(rng.endContainer). Может, у тебя рейндж не всю ноду выделяет?
|
Смотрите в консоль:
Uncaught InvalidStateError: Failed to execute 'surroundContents' on 'Range': The Range has partially selected a non-Text node.И не спрашивайте меня какого хъ он не может сам определить как ему сделать surroundContents в таком случае, а кидает ошбку. Все проклятья - в адрес разработчиков стандарта.=\ |
В давние неспокойные времена оборачивание в теги в WYSIWYG редакторах делали следующим образом:
document.execCommand('fontName', false, 'fake')
потом заменяли все <font name="fake"> на нужный тег |
| Часовой пояс GMT +3, время: 04:49. |