| 
	| 
	
	| 
		
	| 
			
			 
			
				28.06.2012, 02:14
			
			
			
		 |  
	| 
		
			
			| Кандидат Javascript-наук       |  | 
					Регистрация: 13.01.2011 
						Сообщений: 114
					 
		
 |  |  
	| 
				как получить первую видимую строку в переменную ?
			 есть текст на несколько экранов, нужно сделать что-то типа закладок.хочу как-то сделать так что бы первые 2-3 слова из самой верхней видимой в данный момент строки попадали в переменную, а потом чтобы можно было запустить поиск по тексту и прокрутить до этого места.
 Запоминать вместо текста положение вертикального ползунка не вариант ибо, при изменении размера окна это не сработает.
 но как найти именно первую видимую строку я ума не приложу (
 |  |  
	| 
		
	| 
			
			 
			
				28.06.2012, 07:51
			
			
			
		 |  
	| 
		
			|  | Тлен       |  | 
					Регистрация: 02.01.2010 
						Сообщений: 6,601
					 
		
 |  |  
	| По словам - не вариант, они могут повторятся.Если текст статичен(не дописывается и не правится), то это можно сделать запомнив самую верхнюю видимую ноду и в ней текстовую позицию начала видимой строки.
 
				__________________ 29375, 35
			 Последний раз редактировалось Aetae, 28.06.2012 в 07:54.
 |  |  
	| 
		
	| 
			
			 
			
				28.06.2012, 10:22
			
			
			
		 |  
	| 
		
			|  | Матрос       |  | 
					Регистрация: 04.04.2008 
						Сообщений: 6,246
					 
		
 |  |  
	| вы что HTML не учите?! 
<a name="ancor1">тут</a>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<a name="ancor2">там</a>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<a href="#ancor1" >туда</a>
<a href="#ancor2" >в тама</a>
			
			
	
			
			
			
			
			
				  |  |  
	| 
		
	| 
			
			 
			
				28.06.2012, 11:16
			
			
			
		 |  
	| 
		
			
			| Кандидат Javascript-наук       |  | 
					Регистрация: 13.01.2011 
						Сообщений: 114
					 
		
 |  |  
	| Aetae,можно по подробней? я в общем-то не еще только разбираюсь в js.
 
 Gvozd,
 я знаю про якоря, но. дело в том что я хочу что бы эти закладки сохранялись на сайте, и открыв на другом компе они тоже были.
 По сути это даже не закладка, а просто сохранение прогресса чтения.
 Так-то его конечно можно все время тянуть как бы за собой, но все равно нужно во первых как-то понять где эта первая видимая строка чтоб его туда впихнуть.И как то на сервер отправить данные о ее местоположении, мне кажется что каждый раз придется весь текст отправлять целиком(
 |  |  
	| 
		
	| 
			
			 
			
				28.06.2012, 11:23
			
			
			
		 |  
	| 
		
			
			| без статуса       |  | 
					Регистрация: 25.05.2012 
						Сообщений: 8,219
					 
		
 |  |  
	| mitiya,
  
	
 
	| Сообщение от mitiya |  
	| есть текст на несколько экранов, нужно сделать что-то типа закладок. хочу как-то сделать так что бы первые 2-3 слова из самой верхней видимой в данный момент строки попадали в переменную, а потом чтобы можно было запустить поиск по тексту и прокрутить до этого места.
 Запоминать вместо текста положение вертикального ползунка не вариант ибо, при изменении размера окна это не сработает.
 но как найти именно первую видимую строку я ума не приложу (
 |  
	
 Ну идея такая при открытии страницы - смотрим скролл Top и и и пересчитываем его в скролл Тор от ближайшего вышележашего якоря  от данной строки -якорь и скролл Тор от него запоминаем в переменную 
По событию скролл  - опять смотрим и пересчитываем, в процессе возможны и смены якорей и отступов, посколь заголовки типично прописываются через ID |  |  
	| 
		
	| 
			
			 
			
				28.06.2012, 12:04
			
			
			
		 |  
	| 
		
			
			| без статуса       |  | 
					Регистрация: 25.05.2012 
						Сообщений: 8,219
					 
		
 |  |  
	| Есть более продвинутая метода вертикальная таблица во фрейме на 10 экранов и узенькая по ширине, при очередном скролле кликаем по табле на уровне Верхней границы экрана, номер строки запоминам, фрейм position:absolute;z-index:-1000;height:100%; |  |  
	| 
		
	| 
			
			 
			
				28.06.2012, 12:44
			
			
			
		 |  
	| 
		
			|  | Тлен       |  | 
					Регистрация: 02.01.2010 
						Сообщений: 6,601
					 
		
 |  |  
	| >вертикальная таблица во фрейме на 10 экранов и узенькая по ширинеТы съел мой мозг.
 
 Вообще какие-то адские бредни ты предлпогаешь, имхо.) И даже если их применить - они зависимы от разрешения экрана, оп сказал что ему нужен независимый вариант.
 
 Раз такое дело, то мои бредни имеют больше шансов на жизнь:
 Видимый элемент на вскидку можно получить с помощью elementFromPoint, затем сделать с него range, и получить позицию первого видимого символа в этом элементе(как - пока не ясно, но по идее можно). Запоминать соответственно абсолютный номер ноды и позицию в тексте.
 При последующей загрузке находить ноду, делать range, вставлять в позицию невидимый якорь и скролить к нему.
 
 Как-то так.)
 
				__________________ 29375, 35
			 Последний раз редактировалось Aetae, 28.06.2012 в 12:53.
 |  |  
	| 
		
	| 
			
			 
			
				28.06.2012, 12:54
			
			
			
		 |  
	| 
		
			
			| без статуса       |  | 
					Регистрация: 25.05.2012 
						Сообщений: 8,219
					 
		
 |  |  
	| Aetae,
 
    Для текущего Аккаунта - достаточно удобная вещь - посколь во фрейме тут жа можно отправить форму с данными скролла для этого юзера - как то делал для просмотра архивов чата Администратором 
Архивы бывают на 10-30 листов 
Для многопользовательского сайта мон организовать записью в кук текущего юзера двумерным массивом 
где первый индекс - ссылка на таблицу с адресами страниц, второй - номер строки фреймо таблицы, ксать тады её стоит ставить не фреймом, а div overflow-y:hidden, посколь на фрейме с куками проблемы 			 Последний раз редактировалось Deff, 28.06.2012 в 13:07.
 |  |  
	| 
		
	| 
			
			 
			
				28.06.2012, 13:17
			
			
			
		 |  
	| 
		
			
			| без статуса       |  | 
					Регистрация: 25.05.2012 
						Сообщений: 8,219
					 
		
 |  |  
	| 
	
 
	| Сообщение от Aetae |  
	| они зависимы от разрешения экрана, оп сказал что ему нужен независимый вариант. |  
	
 Ерунда - высота ячейки заранее определена! к примеру 20px
 
А метод с запоминанием скролла от ближайщего якоря - реализован здесь - кликните дважды на произвольное место в топике => http://forumd.ru/viewtopic.php?id=1225 
И перезагрузите страницу			 Последний раз редактировалось Deff, 28.06.2012 в 13:21.
 |  |  
	| 
		
	| 
			
			 
			
				28.06.2012, 13:21
			
			
			
		 |  
	| 
		
			|  | Тлен       |  | 
					Регистрация: 02.01.2010 
						Сообщений: 6,601
					 
		
 |  |  
	| 
	
 
	| Сообщение от Deff   |  
	| Aetae, Для многопользовательского сайта мон организовать записью в кук текущего юзера двумерным массивом
 где первый индекс - ссылка на таблицу с адресами страниц, второй - номер строки фреймо таблицы, ксать тады её стоит ставить не фреймом, а div overflow-y:hidden, посколь на фрейме с куками проблемы
 |  
	
 Ещё раз говорю - опу нужно независимое от разрешение решение. 
Ваш метод и так то весьма приблизителен, а в случае если такая ссылка будет сохранена при разрешении 1024х764, а открыта например при 1280х800 - попадание будет даже не близко. Такое решение будет работать только если весь тест состоит из абзацев по одной коротенькой строкеэ(и то не факт) либо если ширина строго фиксирована.
 
upd
 
	
 
	| Сообщение от Deff   |  
	| А метод с запоминанием скролла от ближайщего якоря - реализован здесь - кликните дважды на произвольное место в топике => http://forumd.ru/viewtopic.php?id=1225 И перезагрузите страницу
 |  
	
 Убогая мелкая фиксированная ширина, о чём я и говорю.
 
Попробуйте двойной клик, затем Ctrl+++ чтоб появились переносы строки, а затем обновить. Прам пам пам.
				__________________ 29375, 35
			 Последний раз редактировалось Aetae, 28.06.2012 в 13:28.
 |  |  |  |