Cómo obtener Url Hash (#) desde el lado del servidor

Resuelto Ricky Supit asked hace 15 años • 6 respuestas

Sé que en el lado del cliente (javascript) puedes usar windows.location.hash pero no pude encontrar ninguna forma de acceder desde el lado del servidor. Estoy usando asp.net.

Ricky Supit avatar Nov 25 '08 22:11 Ricky Supit
Aceptado

Tuvimos una situación en la que necesitábamos conservar el hash de URL en las respuestas de publicaciones de ASP.Net. Como el navegador no envía el hash al servidor por defecto, la única forma de hacerlo es utilizar algo de Javascript:

  1. Cuando se envíe el formulario, tome el hash ( window.location.hash) y guárdelo en un campo de entrada oculto del lado del servidor. Coloque esto en un DIV con una identificación de " urlhash" para que podamos encontrarlo fácilmente más tarde.

  2. En el servidor puedes usar este valor si necesitas hacer algo con él. Incluso puedes cambiarlo si es necesario.

  3. Al cargar la página en el cliente , verifique el valor de este campo oculto. Querrá encontrarlo por el DIV que contiene, ya que no se conocerá la identificación generada automáticamente. Sí, podría hacer algunos trucos aquí con .ClientID, pero nos resultó más sencillo usar el contenedor DIV, ya que permite que todo este Javascript viva en un archivo externo y se use de manera genérica.

  4. Si el campo de entrada oculto tiene un valor válido, configúrelo como el hash de URL ( window.location.hash again) y/o realice otras acciones.

Usamos jQuery para simplificar la selección del campo, etc. En general, terminan siendo algunas llamadas a jQuery, una para guardar el valor y otra para restaurarlo.

Antes de enviar:

$("form").submit(function() {
  $("input", "#urlhash").val(window.location.hash);
});

Al cargar la página:

var hashVal = $("input", "#urlhash").val();
if (IsHashValid(hashVal)) {
  window.location.hash = hashVal;
}

IsHashValid()Puede verificar " undefined" u otras cosas que no desea manejar.

Además, asegúrate de utilizarlo $(document).ready()de forma adecuada, por supuesto.

Chris avatar Oct 18 '2009 23:10 Chris

[RFC 2396][1] sección 4.1:

Cuando se utiliza una referencia de URI para realizar una acción de recuperación en el recurso identificado, el identificador de fragmento opcional, separado del URI por un carácter rayado ("#"), consta de información de referencia adicional que será interpretada por el agente de usuario después de la recuperación. la acción se ha completado con éxito . Como tal, no forma parte de un URI, pero a menudo se utiliza junto con un URI.

(énfasis añadido) [1]: https://www.rfc-editor.org/rfc/rfc2396#section-4

Mauricio Scheffer avatar Nov 25 '2008 19:11 Mauricio Scheffer