|
|
|
(JavaScript) следим за навигацией (якорем)
|
|||
|---|---|---|---|
|
#18+
После бесполезных попыток найти документацию по установки событий на навигацию в браузере (кнопки "назад" и "вперёд"), пришел к выводу, что единственным решением, скорее всего, будет ловля изменения значения якоря при помощи setInterval. Честно эта идея мне не нравиться, но я не нахожу другого решения. У кого может, будут идеи получше? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2008, 03:30 |
|
||
|
(JavaScript) следим за навигацией (якорем)
|
|||
|---|---|---|---|
|
#18+
А нет такого события. Если бы оно было - его можно было бы переопределить. Типа нажимаешь "назад" - попадаешь на нехороший сайт. Бороться с этим - бесполезно. Мне просто кажеться (и небезосновательно), что, если уж возникает такая проблема - значит какой-то косяк в структуре сайта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2008, 07:52 |
|
||
|
(JavaScript) следим за навигацией (якорем)
|
|||
|---|---|---|---|
|
#18+
ShSerge, Вы все утрируете, ибо я могу повесить функцию на таймер, которая будет проверять изменился ли адрес, если изменился, то гоу то нехороший сайт. Согласитесь, результат такой-же, что и обработчик клавиш "Назад" и "Вперёд", но реализовано по индуски... Не хочу писать индусский код :D ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2008, 11:45 |
|
||
|
(JavaScript) следим за навигацией (якорем)
|
|||
|---|---|---|---|
|
#18+
NT ManShSerge, Не хочу писать индусский код :D Хотите. Попадая на другой сайт Вы попадаете и в другое пространство имен и Ваша setInterval функция не будет действовать. Просто очищайте историю, если не хотите уходить с сайта. В принципе мне не нравится когда некоторые сайты очищают историю (как пользователю). Поэтому это нужно делать только в тех случаях когда нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2008, 12:00 |
|
||
|
(JavaScript) следим за навигацией (якорем)
|
|||
|---|---|---|---|
|
#18+
NT Man, Дело не в "нехорошем сайте". Туда попасть миллион способов есть, просто, нутрём чувствую, что если возникает проблема - значит чего-то в структуре не так. Я уже этот факт неоднократно даже у своих сослуживцев наблюдал. Вот и интересно у Вас-то чего? Хоть бы написали из-за чего проблема возникла? Может ещё кому интересно будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2008, 12:00 |
|
||
|
(JavaScript) следим за навигацией (якорем)
|
|||
|---|---|---|---|
|
#18+
> повесить функцию на таймер, которая будет проверять изменился ли > адрес Будут ли живы оные функция и таймер после перехода браузера на другой сайт? Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2008, 12:08 |
|
||
|
(JavaScript) следим за навигацией (якорем)
|
|||
|---|---|---|---|
|
#18+
apapacyПросто очищайте историю... Очень плохой совет. Я бы на такой сайт и не ходил бы. Даже и не проверял, а что её (историю) так просто очистить можно? Так за это ж, ёлки-палки, можно и по физии... . Зашёл куда-то с хорошего, нужного мне сайта, а мне взяли и историю почистили. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2008, 12:35 |
|
||
|
(JavaScript) следим за навигацией (якорем)
|
|||
|---|---|---|---|
|
#18+
ShSerge, Все банально. Пишу свой AJAX движок. А, как нам известно, любые динамические изменения страницы не отражаются в истории (со страницы то никуда мы не уходили). А хочется, чтобы все было как у обычных сайтов, т.е. "назад" и "вперёд" работало. Да чтобы можно было другу ссылку дать на нужную страницу, и он туда попал без проблем. Для этого меняю совместно с динамической перезагрузкой и ссылку. Вернее не всю ссылку, а то, что разрешено менять стандартами, а это якорь. И все бы хорошо, даже в историю изменения адреса пишутся, но когда жмакаешь "назад" или "вперёд" изменений ноль (опять же страница не перезагружалась в типичном понятии браузера). Вот тут и задача, надо отслеживать либо нажатие клавиш "назад", "вперёд" либо получать событие при изменении якоря (части адреса за символом '#'). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2008, 14:01 |
|
||
|
(JavaScript) следим за навигацией (якорем)
|
|||
|---|---|---|---|
|
#18+
ShSerge, Действительно, историю нельзя почистить (распространяют для этого эктивиксы). Но почистить иногда нужно просто если идет работа с приложением в котором логика не допускает вольности. Впрочем для полностью Аякс-приложения это не так актуально. так как начать можно в новой вкладке/окне, а дальше все идет фоновыми запросами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2008, 14:47 |
|
||
|
(JavaScript) следим за навигацией (якорем)
|
|||
|---|---|---|---|
|
#18+
NT Man, Да в этом случае setInterval можно использовать. Но есть небольшая проблема. На время выполнения JavaScript функций ИЕ "останавливает счетчик" и все будет работать более менее гладко. Прочие же браузеры запоминают вызовы и выстреливают их. так что при интенсивной работе JavaScript таких отложенных вызовов может накапливаться довольно много (возможно это скажется на производительности хотя нужно пробовать - может быть и не так сильно). Поэтому можно попробовать цепочку вызовов setTimeout с малым интервалом и setInterval с большим интервалом (для того чтобы запустить процесс на случай ошибки при вызове setTimeout). Но в общем-то с учетом асинхронности загрузки такой способ может иметь неоднозначные результаты, так как отмнившаяся страничка может прорисовываться дольше чем требуемая и результат будет зависеть от того насколько терпеливо пользователь ожидает загрузки страничек при переходе по истории. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2008, 15:04 |
|
||
|
(JavaScript) следим за навигацией (якорем)
|
|||
|---|---|---|---|
|
#18+
NT Man, Про адрес с решёткой - мысль правильная, я тоже к такому выводу в свое время пришёл (совершенно независимо), когда хотел движок хорума написать на аяксе. А вот взад-вперёд уж точно ничего не поделаешь. Можно хранить историю в массиве (он-то никуда не денется - всё на одной странице!) и нарисовать на страничке свои кнопки взад-вперёд. ПС а вот про таймер не понял зачем он. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2008, 20:51 |
|
||
|
(JavaScript) следим за навигацией (якорем)
|
|||
|---|---|---|---|
|
#18+
таймер проверяет адрес и генерирует событие ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2008, 20:58 |
|
||
|
(JavaScript) следим за навигацией (якорем)
|
|||
|---|---|---|---|
|
#18+
Неплохо с этой задачей справляется jQuery. Год назад, когда я делал такую же хрень, то пользовался jquery.history.js. В FF и Opera все было тип-топ, в ИЕ немного подглючивало. Я поковырял немного библиотеку, немного доделал, но бросил. Думаю, за год точно что-то поменялось. Если тогда это сносно работало, то сейчас и подавно ... ИМХО Библиотека идет как дополнение к jQuery - jQuery.extend(...), но при желании и возможностях можно ее поколупать под себя - там вроде используются две привязки к основной библиотеке - history и browser для кроссбраузерности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2008, 00:11 |
|
||
|
(JavaScript) следим за навигацией (якорем)
|
|||
|---|---|---|---|
|
#18+
Сделал через setInterval. Кстати ни Oper-у, ни FireFox, ни IE это не грузит даже с параметром опроса адреса 1мс. А вот Google Crome хромает показав загрузку процессора 30%. Идем дальше в Opera и FireFox работает красиво и как надо, а вот IE - Must Die! Первую проблему, я решил. (Он не писал в историю изменение якоря, если нет для соответствующего якоря селектора. Настругал я ему селекторов.) Теперь пишет в историю, изменяет адресную строку, да только толку от этого... location.hash и location.href замирают на последнем адресе. т.е. последующие "назад", "вперёд" бестолку ему. Как получить теперь реальный адрес?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2008, 13:17 |
|
||
|
|

start [/forum/topic.php?fid=22&fpage=315&tid=1455676]: |
0ms |
get settings: |
7ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
42ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
| others: | 198ms |
| total: | 309ms |

| 0 / 0 |
