2012-07-30 30 views
5

tengo una URL como http://www.example.com/folder/file.html#val=90&type="test"&set="none"&value="reset?setvalue=1&setvalue=45"¿Cómo obtener el valor del hashtag y el valor de ampersand de una url en Javascript?

Ahora tengo que conseguir la parte del URL que se inicie desde el #, ¿Cómo consigo que, He intentado utilizar window.location.search.substr(); pero parece que busca? en una url. ¿existe un método para obtener el valor de url después de #

¿Cómo también consigo una parte de url de signo &

Gracias, Michael

+0

¿Alguna suerte @Mike? –

+0

@MatthewBlancarte no hay ninguna forma de acceso directo para obtener nada después de ampersand como lo que tenemos para etiqueta hash, si no, entonces ¿cuál es el enfoque – Mike

+0

¿Has probado el enfoque aceptado en el enlace que di en la parte inferior de mi respuesta? http://stackoverflow.com/questions/901115/get-query-string-values-in-javascript Eso analizará la cadena de consulta. Si estuvieras haciendo esto desde el lado del servidor (por ejemplo, PHP/Rails/etc.), Sería mucho más simple. –

Respuesta

13
var hash = window.location.hash; 

Más información aquí: https://developer.mozilla.org/en/DOM/window.location

Actualización: Esto captará todos los caracteres después del hashtag, incluidas las cadenas de consulta. Del manual MOZ:

window.location.hash === the part of the URL that follows the # symbol, including the # symbol. 
You can listen for the hashchange event to get notified of changes to the hash in 
supporting browsers. 

Ahora, si es necesario analizar la cadena de consulta, que creo que lo hace, mira esto aquí: How can I get query string values in JavaScript?

+0

¿Hay alguna forma de obtener un valor después de & – Mike

+0

? Esa es una pregunta por separado, publíquela como tal o edite la pregunta actual. La parte después de '?' (No '&' es la cadena de consulta; usted preguntó acerca del hash). – Utkanos

+0

@Ukanos He editado ahora por favor responde si sabes – Mike

0

Esto hará que los valores # y &:

var page_url = window.location + "";  // Get window location and convert to string by adding "" 
var hash_value = page_url.match("#(.*)"); // Regular expression to match anything in the URL that follows # 
var amps;         // Create variable amps to hold ampersand array 

if(hash_value)        // Check whether the search succeeded in finding something after the # 
{ 
    amps = (hash_value[1]).split("&");  // Split string into array using "&" as delimiter 
    alert(amps);       // Alert array which will contain value after # at index 0, and values after each & as subsequent indices 
} 
+0

no se puede leer la propiedad '1' de nulo es el error que obtengo cuando ejecuto esto en la consola – Mike

+1

Esto producirá un error cada vez que no haya hash porque se supone que no se ha verificado una coincidencia. – Utkanos

+0

puede explicar su segunda línea de código – Mike

5

para agarrar el hash:

location.hash.substr(1); //substr removes the leading # 

ag rab la cadena de consulta

location.search.substr(1); //substr removes the leading ? 

[EDIT - ya que parecen tener una cadena especie de cadena de consulta-esq que en realidad es parte de su hachís, lo siguiente será recuperar y analizarlo en un objeto de nombre de emparejamientos/valor .

var params_tmp = location.hash.substr(1).split('&'), 
    params = {}; 
params_tmp.forEach(function(val) { 
    var splitter = val.split('='); 
    params[splitter[0]] = splitter[1]; 
}); 
console.log(params.set); //"none" 
+0

location.search.substr (1); no parece funcionar para mí. – Mike

+0

Esto se debe a que está confundiendo cadenas de consulta con valores hash. Parece que tiene una especie de cadena string-esq de consulta como parte de su hash. Si desea extraer * ese *, necesitará algunos REGEX, manejo de cadenas. Editaré la respuesta. – Utkanos

Cuestiones relacionadas