У меня есть Ajax тяжелое приложение, которое может иметь URL такой как
http://example.com/myApp/#page=1
Когда пользователь управляет сайтом, строка поиска может измениться на что-то как
http://example.com/myApp/#page=5
не перезагружая страницу.
Моей проблемой является следующая последовательность:
Если бы я обнаруживаю изменение, некоторый JavaScript действовал бы на него.
периодически проверять текущий адрес, используя setTimeout / interval:
var oldLocation = location.href;
setInterval(function() {
if(location.href != oldLocation) {
// do your action
oldLocation = location.href
}
}, 1000); // check every second
Вы должны расширить объект местоположения, чтобы раскрыть событие, к которому вы можете привязаться.
то есть:
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
}
SWFaddress - отличная библиотека для такого рода вещей.