ventajas que historia funciona español ejemplos desventajas como caracteristicas actualidad javascript javascript-events address-bar

que - ¿Cómo puedo detectar un cambio en la barra de direcciones con JavaScript?



que es javascript pdf (4)

Debe extender el objeto de ubicación para exponer un evento al que pueda vincularse.

es decir:

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 }

Tengo una aplicación pesada Ajax que puede tener una URL como

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

Cuando un usuario manipula el sitio, la barra de direcciones puede cambiar a algo así como

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

sin recargar la página.

Mi problema es la siguiente secuencia:

  1. Un usuario marca la primera URL.
  2. El usuario manipula la aplicación de manera que la segunda URL sea el estado actual.
  3. El usuario hace clic en el marcador creado en el paso 1.
  4. La URL en la barra de direcciones cambia de http://example.com/myApp/#page=5 a http://example.com/myApp/#page=1 , pero no conozco una forma de detectar el cambio sucedido.

Si detecto un cambio, algo de JavaScript actuaría sobre él.


HTML5 presenta un evento hashchange que le permite registrarse para notificaciones de cambios hash de url sin sondeo para ellos con un temporizador.

Es compatible con todos los principales navegadores (Firefox 3.6, IE8, Chrome, otros navegadores basados ​​en Webkit), pero aún sugiero utilizar una biblioteca que maneje el evento por usted, es decir, mediante el uso de un temporizador en navegadores que no admitan el Evento HTML5 y utilizando el evento de lo contrario.

Para obtener más información sobre el evento, consulte https://developer.mozilla.org/en/dom/window.onhashchange y http://msdn.microsoft.com/en-us/library/cc288209%28VS.85%29.aspx .


compruebe la dirección actual periódicamente usando setTimeout / interval:

var oldLocation = location.href; setInterval(function() { if(location.href != oldLocation) { // do your action oldLocation = location.href } }, 1000); // check every second


SWFaddress es una excelente biblioteca para este tipo de cosas.