как получить первую видимую строку в переменную ?
есть текст на несколько экранов, нужно сделать что-то типа закладок.
хочу как-то сделать так что бы первые 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+++ чтоб появились переносы строки, а затем обновить. Прам пам пам. |
Цитата:
Цитата:
|
Цитата:
Цитата:
Цитата:
|
Цитата:
|
Бедный оп смотрит на нас и охреневает.)
|
Фиг сым - Допустим Вы правы -
Тогда считать кол-во точек до данной строки - цифра короче, нежели текстовая переменная |
если честно я ничего не понял )))
|
Цитата:
абсолютный номер ноды и позицию в тексте. Это даёт 100% точность в отличие от любого из ваших предложений. |
Цитата:
|
Поспорили и разошлись, а оп остался один и недоумевает: "Ээээ, а реализовать то хоть как-нибудь?.. ". =)
|
mitiya,
Если на jQuery устроит - могу реализовать - если дадите ссылку на страницу - посколь оптимизировать стоит под конкретику, |
Deff,
jQuery устроит разумеется. ссылки нет я только начал и тут же споткнулся. Да и самому все равно надо разбираться. Мне хоть примерный код. Я к примеру не пойму что за нода О:) |
Цитата:
Потом смотрим его абсолютный номер среди подобных тегов на странице =========================================== в jQuery я бы распарсил родителей и получил дерево вложенности body div.tryam div.post span.eq(13) =========================================== Идея такова: После очередного скролла или загрузки страницы - вычисляем координаты левого верхнего угла экрана относительно верха страницы var Top=$(window).scrollTop( ); var Left=$(window).scrollLeft( ); далее перебираем крупнопанельные элементы страницы и изучаем попадают ли они в область видимости с заходом выше экрана или точно по верхней кромке - как только нашли такой элемент - парсим внутри его ближайший элемент к верхнему краю, как нашли - запоминаем его и смотрим есть ли текст в самом элементе, если нет - ищем текст в ближайшем за ним |
Цитата:
что касается поиска элемента, то подразумевается что это будет один конкретный див с текстом внутри. |
mitiya,
Для этого, - я и просил взглянуть на реальную страницу |
Часовой пояс GMT +3, время: 17:39. |