Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 30.12.2008, 12:17
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

selectNode и surroundContents в Safari
Есть функция wrap(узел, имя_тега [, сторона]):
var wrap = function(ie) {
	return ie ? function(node, tag, side) {
		return node.applyElement(document.createElement(tag), side);
	} : function(node, tag, side) {
		var range = document.createRange(), wrapper = document.createElement(tag);
		range[side == 'inside' ? 'selectNodeContents' : 'selectNode'](node);
		range.surroundContents(wrapper);
		return wrapper;
	};
}(/*@cc_on 1 @*/);

3-й параметр может быть «inside» или «outside» (по умолчанию).
Safari и Chrome почему-то ничего не делают, если используется метод selectNode, т.е. когда 3-й параметр не указан или имеет значение «outside».
Google выдает кучу ссылок на страницы, где написано что в Opera и Safari исправили какие-то баги, большинство еще 2006 года, связанные с selectNode, но что конкретно там не работало так и не нашел.
Решение конечно есть:
var wrap = function(ie) {
	return ie ? function(node, tag, side) {
		return node.applyElement(document.createElement(tag), side);
	} : function(node, tag, side) {
		var wrapper = document.createElement(tag);
		if(side == 'inside') {
			var range = document.createRange();
			range.selectNodeContents(node);
			range.surroundContents(wrapper);
		}
		else {
			node.parentNode.insertBefore(wrapper, node);
			wrapper.appendChild(node);
		}
		return wrapper;
	};
}(/*@cc_on 1 @*/);


Но хотелось бы разобраться, что не так с selectNode, может-быть кто-нибудь решал подобную задачу? В каких версиях Firefox, Safari и Opera может быть ошибка при использовании selectNode, selectNodeContents и surroundContents в данном контексте?

-------------------
Еще выяснилось, что Opera очень медленно работает с этими методами

Последний раз редактировалось Octane, 30.12.2008 в 14:45.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Safari и клавиша Ctrl freebit Events/DOM/Window 2 19.07.2008 23:57