Javascript: проверить, изменен URL или нет?

#javascript

#javascript

Вопрос:

Мой формат url похож :

 http://domain.in/home
http://domain.in/books/notes
http://domain.in/books/notes/copy
  

Я вызвал функцию javascript в window.загрузите, чтобы проверить, изменился URL или нет.

Если URL был изменен, то выполняется код, иначе он вернется и проверит снова через 5 секунд.

Мой код :

 window.onload = function(){
   setInterval(function(){
       page_open();
   }, 5000);
};

function page_open(){
    var pages=unescape(location.href);
    pages=pages.substr( pages.lastIndexOf("studysquare.in/")   15 ); 

    // gives book if url is http://studysquare.in/book
    //alert("pages" pages "nn  recent" recent);

    if (pages==recent) {    return;     }
    recent=pages;

    alert("Reached down now the code will execute.");
}
  

Проблема теперь в том, что когда URL-адрес похож :

 http://domain.in/book
  

Глубина одного уровня, тогда все работает нормально. Но когда URL-адрес похож

 http://domain.in/book/copy    or    http://domain.in/book/copy/notes
  

Тогда ничего не работает…..
Любая помощь для проверки 3-уровневого изменения URL-адреса в javascript каждые 5 секунд ? 🙂

Привет, извините, я забыл это сказать… У меня есть файл .htaccess, который не позволяет перемещаться по странице, когда записан URL любой длины после domain.in/ …. это означает, что только одна страница остается открытой и на нее не влияет изменение URL…

Комментарии:

1. Вы понимаете, что контекст вашего кода будет уничтожен и будет создан новый контекст в момент загрузки новой страницы? Ваш код никогда не обнаружит изменения, потому что его текущий экземпляр перестает выполняться при навигации.

2. Привет, извините, я забыл это сказать… У меня есть файл .htaccess, который не позволяет перемещаться по странице, когда URL любой длины после domain.in записывается/…. это означает, что только одна страница остается открытой и на нее не влияет изменение URL…

3. Чего вы пытаетесь достичь, проверяя, изменился ли URL-адрес?

4. просто попробуйте открыть соответствующую страницу на главной стабильной странице….

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

Ответ №1:

Когда пользователь изменяет URL-адрес, браузер выгружает всю страницу, на которой он находится в данный момент (включая ваш javascript, следовательно, он перестает запускаться), а затем загружает следующую страницу. Ни один javascript не может работать с изменениями страницы. Вы не можете отслеживать изменение URL, как вы делаете, если пользователь переходит на другую страницу.

Лучший способ отследить изменение URL-адреса — добавить onUnload событие к объекту body для запуска вашего javascript, когда браузер выгружает страницу непосредственно перед началом загрузки новой страницы, запрошенной пользователем, — но я не уверен, что это поможет достичь вашей цели отслеживания их последних просмотров страниц (если это то, что вы хотите сделать).

Комментарии:

1. Привет, я знаю это… Пожалуйста, скажите, почему он не работает с URL-адресами 2 или 3 уровня, потому что изменение URL-адреса не меняет мою страницу… Спасибо за ответ

2. Он не изменится, потому что он НИКОГДА не вызывался. Контекст уничтожается, и ваш «старый URL» не существует к моменту вызова вашего кода на следующей странице. Думайте об этом как о запущенном процессе. Когда вы переходите на другую страницу, это завершает процесс и запускает его новый экземпляр. Никакие переменные или данные не сохраняются, все уничтожено.

Ответ №2:

Похоже, что плагин истории, такой как jQuery address, вам бы очень помог.

Это позволяет вам обрабатывать событие при изменении URL-адреса, поэтому вы можете загружать новое содержимое по мере необходимости.