Кнопка «Назад / Вперед» на динамически создаваемой веб-странице (AJAX) - PullRequest
1 голос
/ 17 ноября 2011

Мой вопрос касается использования кнопок «Назад» и «Далее» (браузера) на веб-странице AJAX (динамической).

Решение, которое я сам придумал:

setInterval(function(){    
                if (location.hash != hash)
                {
                   hash = location.hash;
                   app.url = window.location.href.toString().replace('http://xxxxx.nl/xxxx/#!/','')
                   app.handleURL();
                }
            }, 500);

эта функциячитает URL-адрес (хэш) и сравнивает его с последним сохраненным URL-адресом (хэш) каждые 0,5 секунды.Если URL-адрес изменился (задний / следующий нажат), он запускает handleUrl (), который запускает больше функций для динамического построения моей страницы.

проблема в том, что этот вид работает НО, когда я щелкаю элемент html [A] или когда я изменяю URL другим способом (javascript), этот контент будет загружаться ДВАЖДЫ из-за setInterval ()... функциональность.Как я могу построить свой HTML / Javascript таким образом, чтобы мой контент всегда загружался один раз,

  • один раз, когда я нажимаю назад / следующий

  • один раз, когда я нажимаю на элемент HTML / использую функции Javascript во время выполнения

Я искал решение для Google, плз, помогите!

Ответы [ 2 ]

0 голосов
/ 17 ноября 2011

Я предлагаю использовать для этого библиотеку.Будет сложно сделать собственное решение.Взгляните на это:

http://www.asual.com/jquery/address/docs/#sample-usage

http://benalman.com/projects/jquery-bbq-plugin/

0 голосов
/ 17 ноября 2011

Вам не нужен таймер, чтобы проверить это.Просто используйте событие onhashchange и запускайте вызовы AJAX при вызове события.Это событие не поддерживается в версиях IE ниже 8, поэтому ваш метод выглядит нормально, если вам нужна поддержка IE.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...