как получить первую видимую строку в переменную ?
есть текст на несколько экранов, нужно сделать что-то типа закладок.
хочу как-то сделать так что бы первые 2-3 слова из самой верхней видимой в данный момент строки попадали в переменную, а потом чтобы можно было запустить поиск по тексту и прокрутить до этого места. Запоминать вместо текста положение вертикального ползунка не вариант ибо, при изменении размера окна это не сработает. но как найти именно первую видимую строку я ума не приложу ( |
По словам - не вариант, они могут повторятся.
Если текст статичен(не дописывается и не правится), то это можно сделать запомнив самую верхнюю видимую ноду и в ней текстовую позицию начала видимой строки. |
вы что 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> |
Aetae,
можно по подробней? я в общем-то не еще только разбираюсь в js. Gvozd, я знаю про якоря, но. дело в том что я хочу что бы эти закладки сохранялись на сайте, и открыв на другом компе они тоже были. По сути это даже не закладка, а просто сохранение прогресса чтения. Так-то его конечно можно все время тянуть как бы за собой, но все равно нужно во первых как-то понять где эта первая видимая строка чтоб его туда впихнуть.И как то на сервер отправить данные о ее местоположении, мне кажется что каждый раз придется весь текст отправлять целиком( |
mitiya,
Цитата:
По событию скролл - опять смотрим и пересчитываем, в процессе возможны и смены якорей и отступов, посколь заголовки типично прописываются через ID |
Есть более продвинутая метода вертикальная таблица во фрейме на 10 экранов и узенькая по ширине, при очередном скролле кликаем по табле на уровне Верхней границы экрана, номер строки запоминам, фрейм position:absolute;z-index:-1000;height:100%;
|
>вертикальная таблица во фрейме на 10 экранов и узенькая по ширине
Ты съел мой мозг. Вообще какие-то адские бредни ты предлпогаешь, имхо.) И даже если их применить - они зависимы от разрешения экрана, оп сказал что ему нужен независимый вариант. Раз такое дело, то мои бредни имеют больше шансов на жизнь: Видимый элемент на вскидку можно получить с помощью elementFromPoint, затем сделать с него range, и получить позицию первого видимого символа в этом элементе(как - пока не ясно, но по идее можно). Запоминать соответственно абсолютный номер ноды и позицию в тексте. При последующей загрузке находить ноду, делать range, вставлять в позицию невидимый якорь и скролить к нему. Как-то так.) |
Aetae,
:) Для текущего Аккаунта - достаточно удобная вещь - посколь во фрейме тут жа можно отправить форму с данными скролла для этого юзера - как то делал для просмотра архивов чата Администратором Архивы бывают на 10-30 листов Для многопользовательского сайта мон организовать записью в кук текущего юзера двумерным массивом где первый индекс - ссылка на таблицу с адресами страниц, второй - номер строки фреймо таблицы, ксать тады её стоит ставить не фреймом, а div overflow-y:hidden, посколь на фрейме с куками проблемы |
Цитата:
А метод с запоминанием скролла от ближайщего якоря - реализован здесь - кликните дважды на произвольное место в топике => http://forumd.ru/viewtopic.php?id=1225 И перезагрузите страницу |
Цитата:
Ваш метод и так то весьма приблизителен, а в случае если такая ссылка будет сохранена при разрешении 1024х764, а открыта например при 1280х800 - попадание будет даже не близко. Такое решение будет работать только если весь тест состоит из абзацев по одной коротенькой строкеэ(и то не факт) либо если ширина строго фиксирована. upd Цитата:
Попробуйте двойной клик, затем Ctrl+++ чтоб появились переносы строки, а затем обновить. Прам пам пам. |
Часовой пояс GMT +3, время: 00:25. |