2010-11-27 12 views
7

He estado usando hashes para pasar datos entre páginas (como configuración scrollTop(), etc.) y también he usado el evento hashChange para activar cambios en una página determinada.¿Hay algún evento como hashchange para cadenas de consulta?

Sin embargo, los hashes tienen comportamientos predeterminados que no me interesan necesariamente, como hacer que la página salte a un lugar determinado (a veces insignificante).

me siento como obtener/establecer una cadena de consulta sería más lógico, pero:

  1. lo es?

  2. ¿Hay algún evento que pueda escuchar cuando se establece la cadena de consulta?

  3. ¿Hay comportamientos relacionados con la cadena de consulta que deba conocer?

Respuesta

1
  1. Es ilógico reinventar el comportamiento del ancla. Es mejor no exponer enlaces hash a fragmentos insignificantes (aunque los navegadores modernos están haciendo scrollIntoView() para cualquier elemento con id, existe un comportamiento dedicado para <a name="xxx">). Entonces, la respuesta es sí aquí, los argumentos de la página deben pasar a través de querystring.
  2. Evento es window.beforeunload, sí, recarga de la página cuando javascript:void(location.search='some') ha sido establecido
  3. No hay sorpresas, tiene un look

Además, en el trabajo con cadena de consulta: http://xkr.us/js/querystring

1

Depende de lo que esté haciendo.

Un cambio de cadena de consulta siempre activará una recarga de página. La única parte de la URL que puede cambiar sin una recarga de página es la #part.

En las aplicaciones de JavaScript, las cargas de página generalmente no son correctas. Pero puede ser posible utilizarlo al tener un modelo de solicitud/respuesta de página html tradicional.

Sin embargo, no hay evento AFAIK, ya que cambiará de página.

1

Como dice la otra respuesta, cambiar la cadena de consulta causará la recarga de una página. En lo que respecta al navegador, estarás en una página completamente nueva.

Hay eventos que se activarán cuando hagas esto. El evento 'beforeunload' se activará, sin embargo, no será muy útil, ya que también se activará cuando el usuario haga clic en un enlace o cierre la ventana.

Efectivamente, el evento que se activará si cambia la cadena de consulta será el evento de carga en la página nueva que carga.

Cuestiones relacionadas