Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.09.2009, 18:06
Новичок на форуме
Отправить личное сообщение для getme Посмотреть профиль Найти все сообщения от getme
 
Регистрация: 13.08.2009
Сообщений: 4

Определить границы выделенного
Я работаю с range объектом, вопрос такой
как мне взять в рамку то что выделено?

Лучше покажу на картинке (сорри, рисую плохо; мне надо нарисовать красную рамку над выделенном)

Я вот никак понять немогу с чего начать, нужно работать с previousSibling, nextSibling, parentNode или с чем?

Выделенная область у меня есть

this.getUserSelection		= function() {
		var userSelection;
		if (window.getSelection) {
			userSelection = window.getSelection();
		} else if (document.selection) { // Opera!
			userSelection = document.selection.createRange();
		} else if ( document.getSelection() ) { // khtml
			userSelection = document.getSelection();
		}
		
		var selectedText = userSelection;
		// Handle IE
		if (userSelection.text) {
			selectedText = userSelection.text;
		}
		
		return selectedText;
	};


далее получаем range объект

this.getRangeObject  = function(selectionObject) {
		
	 if ( selectionObject.getRangeAt )
	  return selectionObject.getRangeAt(0);
	 else if ( document.selection ) { // IE
	  return document.selection.createRange();
	 } else { // Safari!
	  var range = document.createRange();
	  range.setStart(selectionObject.anchorNode, selectionObject.anchorOffset);
	  range.setEnd(selectionObject.focusNode, selectionObject.focusOffset);
	  return range;
	 }
	};
Ответить с цитированием
  #2 (permalink)  
Старый 22.09.2009, 22:32
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Range, TextRange и Selection
Ответить с цитированием
  #3 (permalink)  
Старый 23.09.2009, 18:43
Новичок на форуме
Отправить личное сообщение для getme Посмотреть профиль Найти все сообщения от getme
 
Регистрация: 13.08.2009
Сообщений: 4

спасибо, прочел еще раз
но я все же не пойму, как мне реализовать то что я показал на картинке

я понимаю только что мне нужно взять два нода, получить их координаты, высоту\ширину
мне не понятно какие ноды надо брать что бы это реализовать?
общий root container не подходит т.к он может захватить весь документю
Ответить с цитированием
  #4 (permalink)  
Старый 23.09.2009, 18:51
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

startContainer и endContainer для W3C-браузеров, в IE объект TextRange имеет метод getBoundingClientRect.

Последний раз редактировалось Octane, 23.09.2009 в 18:54.
Ответить с цитированием
  #5 (permalink)  
Старый 23.09.2009, 19:06
Новичок на форуме
Отправить личное сообщение для getme Посмотреть профиль Найти все сообщения от getme
 
Регистрация: 13.08.2009
Сообщений: 4

ок, судя из названия метода - getBoundingClientRect
звучит именно как то что мне нужно, попробую
что касается W3
теоретически если я возьму лев.верх координату startContainer и прав.нижн. координату endContainer то будет имеено то что нудно

а как быть когда выделение не на одной строке? (посмотри на картинку
выдление начинается с "ьное название темы.
Фразы помогите")

вот "Фразы помогите" уже на на второй строке
вот именно в таком варианте мне интересно что произойдет?
Ответить с цитированием
  #6 (permalink)  
Старый 23.09.2009, 19:20
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Сообщение от getme
таком варианте мне интересно что произойдет?
startContainer и endContainer будут разные, что не так? Когда выделение будет в пределах одного контейнера, тогда startContainer и endContainer будут совпадать.

Для точного определения визуальных границ выделения, можно добавить какие-нибудь свои элементы в начало и конец выделения, чтобы определить их координаты. У новых W3C-браузеров тоже есть метод getBoundingClientRect, но только для элементов, с объектом Range не работает.

Координаты элемента на странице
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определить есть ли скролинг на странице zaka29 Events/DOM/Window 4 26.06.2009 00:26
потеря выделенного фрагмента underW Общие вопросы Javascript 2 06.04.2009 15:39
Кроссброузерно определить значение атрибута faunder Общие вопросы Javascript 5 21.02.2009 22:08
Определить координаты объекта в таблице ner2000 Events/DOM/Window 2 14.06.2008 01:56
как определить шрифты scuter Общие вопросы Javascript 9 19.05.2008 14:32