Как я могу обнаружить изменение строки поиска с JavaScript?

У меня есть Ajax тяжелое приложение, которое может иметь URL такой как

http://example.com/myApp/#page=1

Когда пользователь управляет сайтом, строка поиска может измениться на что-то как

http://example.com/myApp/#page=5

не перезагружая страницу.

Моей проблемой является следующая последовательность:

  1. Пользователь отмечает первый URL.
  2. Пользователь управляет приложением, таким образом, что второй URL является текущим состоянием.
  3. Пользователь нажимает на закладку, созданную на шаге 1.
  4. URL в строке поиска изменяется от http://example.com/myApp/#page=5 до http://example.com/myApp/#page=1, но я не знаю о способе обнаружить произошедшее изменение.

Если бы я обнаруживаю изменение, некоторый JavaScript действовал бы на него.

28
задан Cœur 29 December 2016 в 17:59
поделиться

3 ответа

периодически проверять текущий адрес, используя setTimeout / interval:

 var oldLocation = location.href;
 setInterval(function() {
      if(location.href != oldLocation) {
           // do your action
           oldLocation = location.href
      }
  }, 1000); // check every second
18
ответ дан 28 November 2019 в 02:58
поделиться

Вы должны расширить объект местоположения, чтобы раскрыть событие, к которому вы можете привязаться.

то есть:

window.location.prototype.changed = function(e){};

(function() //create a scope so 'location' is not global
{
    var location = window.location.href;
    setInterval(function()
    {
        if(location != window.location.href)
        {
            location = window.location.href;
            window.location.changed(location);
        }
    }, 1000);
})();

window.location.changed = function(e)
{
    console.log(e);//outputs http://newhref.com
    //this is fired when the window changes location
}
6
ответ дан 28 November 2019 в 02:58
поделиться

SWFaddress - отличная библиотека для такого рода вещей.

0
ответ дан 28 November 2019 в 02:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: