Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.06.2012, 02:14
Кандидат Javascript-наук
Отправить личное сообщение для mitiya Посмотреть профиль Найти все сообщения от mitiya
 
Регистрация: 13.01.2011
Сообщений: 114

как получить первую видимую строку в переменную ?
есть текст на несколько экранов, нужно сделать что-то типа закладок.
хочу как-то сделать так что бы первые 2-3 слова из самой верхней видимой в данный момент строки попадали в переменную, а потом чтобы можно было запустить поиск по тексту и прокрутить до этого места.
Запоминать вместо текста положение вертикального ползунка не вариант ибо, при изменении размера окна это не сработает.
но как найти именно первую видимую строку я ума не приложу (
Ответить с цитированием
  #2 (permalink)  
Старый 28.06.2012, 07:51
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,587

По словам - не вариант, они могут повторятся.
Если текст статичен(не дописывается и не правится), то это можно сделать запомнив самую верхнюю видимую ноду и в ней текстовую позицию начала видимой строки.
__________________
29375, 35

Последний раз редактировалось Aetae, 28.06.2012 в 07:54.
Ответить с цитированием
  #3 (permalink)  
Старый 28.06.2012, 10:22
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 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>
Ответить с цитированием
  #4 (permalink)  
Старый 28.06.2012, 11:16
Кандидат Javascript-наук
Отправить личное сообщение для mitiya Посмотреть профиль Найти все сообщения от mitiya
 
Регистрация: 13.01.2011
Сообщений: 114

Aetae,
можно по подробней? я в общем-то не еще только разбираюсь в js.

Gvozd,
я знаю про якоря, но. дело в том что я хочу что бы эти закладки сохранялись на сайте, и открыв на другом компе они тоже были.
По сути это даже не закладка, а просто сохранение прогресса чтения.
Так-то его конечно можно все время тянуть как бы за собой, но все равно нужно во первых как-то понять где эта первая видимая строка чтоб его туда впихнуть.И как то на сервер отправить данные о ее местоположении, мне кажется что каждый раз придется весь текст отправлять целиком(
Ответить с цитированием
  #5 (permalink)  
Старый 28.06.2012, 11:23
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

mitiya,
Сообщение от mitiya
есть текст на несколько экранов, нужно сделать что-то типа закладок.
хочу как-то сделать так что бы первые 2-3 слова из самой верхней видимой в данный момент строки попадали в переменную, а потом чтобы можно было запустить поиск по тексту и прокрутить до этого места.
Запоминать вместо текста положение вертикального ползунка не вариант ибо, при изменении размера окна это не сработает.
но как найти именно первую видимую строку я ума не приложу (
Ну идея такая при открытии страницы - смотрим скролл Top и и и пересчитываем его в скролл Тор от ближайшего вышележашего якоря от данной строки -якорь и скролл Тор от него запоминаем в переменную
По событию скролл - опять смотрим и пересчитываем, в процессе возможны и смены якорей и отступов, посколь заголовки типично прописываются через ID
Ответить с цитированием
  #6 (permalink)  
Старый 28.06.2012, 12:04
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Есть более продвинутая метода вертикальная таблица во фрейме на 10 экранов и узенькая по ширине, при очередном скролле кликаем по табле на уровне Верхней границы экрана, номер строки запоминам, фрейм position:absolute;z-index:-1000;height:100%;
Ответить с цитированием
  #7 (permalink)  
Старый 28.06.2012, 12:44
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,587

>вертикальная таблица во фрейме на 10 экранов и узенькая по ширине
Ты съел мой мозг.

Вообще какие-то адские бредни ты предлпогаешь, имхо.) И даже если их применить - они зависимы от разрешения экрана, оп сказал что ему нужен независимый вариант.

Раз такое дело, то мои бредни имеют больше шансов на жизнь:
Видимый элемент на вскидку можно получить с помощью elementFromPoint, затем сделать с него range, и получить позицию первого видимого символа в этом элементе(как - пока не ясно, но по идее можно). Запоминать соответственно абсолютный номер ноды и позицию в тексте.
При последующей загрузке находить ноду, делать range, вставлять в позицию невидимый якорь и скролить к нему.

Как-то так.)
__________________
29375, 35

Последний раз редактировалось Aetae, 28.06.2012 в 12:53.
Ответить с цитированием
  #8 (permalink)  
Старый 28.06.2012, 12:54
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Aetae,

Для текущего Аккаунта - достаточно удобная вещь - посколь во фрейме тут жа можно отправить форму с данными скролла для этого юзера - как то делал для просмотра архивов чата Администратором
Архивы бывают на 10-30 листов
Для многопользовательского сайта мон организовать записью в кук текущего юзера двумерным массивом
где первый индекс - ссылка на таблицу с адресами страниц, второй - номер строки фреймо таблицы, ксать тады её стоит ставить не фреймом, а div overflow-y:hidden, посколь на фрейме с куками проблемы

Последний раз редактировалось Deff, 28.06.2012 в 13:07.
Ответить с цитированием
  #9 (permalink)  
Старый 28.06.2012, 13:17
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от Aetae
они зависимы от разрешения экрана, оп сказал что ему нужен независимый вариант.
Ерунда - высота ячейки заранее определена! к примеру 20px

А метод с запоминанием скролла от ближайщего якоря - реализован здесь - кликните дважды на произвольное место в топике => http://forumd.ru/viewtopic.php?id=1225
И перезагрузите страницу

Последний раз редактировалось Deff, 28.06.2012 в 13:21.
Ответить с цитированием
  #10 (permalink)  
Старый 28.06.2012, 13:21
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,587

Сообщение от 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.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как получить значение переменной из callback функции? Хиросим AJAX и COMET 5 24.04.2012 09:32
Как сделать локальную переменную глобальной?? Дмитрий Общие вопросы Javascript 8 02.11.2010 03:33
Как получить размер блока сразу после изменения его содержимого? Cooskon Events/DOM/Window 6 17.09.2010 16:15
Как передать переменную с текстом по событию FRIE jQuery 8 20.04.2010 13:03
Как обозначить переменную выбранную в FileChooser? woo_hoo Общие вопросы Javascript 4 03.07.2008 12:58