Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.08.2014, 01:38
Аватар для brizz
Новичок на форуме
Отправить личное сообщение для brizz Посмотреть профиль Найти все сообщения от brizz
 
Регистрация: 28.08.2014
Сообщений: 7

[Range] surroundContents
Проблема в следующем.

К примеру, выделяю слово и оборачиваю его тегом.



Получаю



Выделяю



Получаю



Выделяю



Ничего не получаю



Как лечить?

Код:
//rng объект Range
rng.surroundContents(document.createElement("b"));
Ответить с цитированием
  #2 (permalink)  
Старый 28.08.2014, 01:45
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,492

Попробуй span. И не плохо бы полный код примера.
__________________
29375, 35
Ответить с цитированием
  #3 (permalink)  
Старый 28.08.2014, 01:47
Аватар для brizz
Новичок на форуме
Отправить личное сообщение для brizz Посмотреть профиль Найти все сообщения от brizz
 
Регистрация: 28.08.2014
Сообщений: 7

Сообщение от Aetae Посмотреть сообщение
Попробуй span. И не плохо бы полный код примера.
Тоже самое...
Ответить с цитированием
  #4 (permalink)  
Старый 28.08.2014, 01:54
Аватар для brizz
Новичок на форуме
Отправить личное сообщение для brizz Посмотреть профиль Найти все сообщения от brizz
 
Регистрация: 28.08.2014
Сообщений: 7

Цитата:
И не плохо бы полный код примера
<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"));
	}
Ответить с цитированием
  #5 (permalink)  
Старый 28.08.2014, 02:01
Аватар для ixth
Профессор
Отправить личное сообщение для ixth Посмотреть профиль Найти все сообщения от ixth
 
Регистрация: 19.01.2010
Сообщений: 354

А попробуй сделать rng.setStartBefore(rng.startContainer) и rng.setEndAfter(rng.endContainer). Может, у тебя рейндж не всю ноду выделяет?
Ответить с цитированием
  #6 (permalink)  
Старый 28.08.2014, 02:27
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,492

Смотрите в консоль:
Uncaught InvalidStateError: Failed to execute 'surroundContents' on 'Range': The Range has partially selected a non-Text node.
И не спрашивайте меня какого хъ он не может сам определить как ему сделать surroundContents в таком случае, а кидает ошбку. Все проклятья - в адрес разработчиков стандарта.=\
__________________
29375, 35
Ответить с цитированием
  #7 (permalink)  
Старый 28.08.2014, 10:21
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

В давние неспокойные времена оборачивание в теги в WYSIWYG редакторах делали следующим образом:
document.execCommand('fontName', false, 'fake')

потом заменяли все <font name="fake"> на нужный тег
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
selectNode и surroundContents в Safari Octane Opera, Safari и др. 0 30.12.2008 12:17