#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-адреса, поэтому вы можете загружать новое содержимое по мере необходимости.