ruta parametros obtener ejemplos dominio absoluta javascript jquery url hash fragment-identifier

parametros - Analizar el identificador hash/fragmento URL con JavaScript



obtener url jquery (9)

Buscando una forma de analizar pares de claves del hash / fragmento de una URL en una matriz de objeto / asociativo con JavaScript / JQuery


Aquí está, modificado a partir de este analizador de cadenas de consulta :

function getHashParams() { var hashParams = {}; var e, a = //+/g, // Regex for replacing addition symbol with a space r = /([^&;=]+)=?([^&;]*)/g, d = function (s) { return decodeURIComponent(s.replace(a, " ")); }, q = window.location.hash.substring(1); while (e = r.exec(q)) hashParams[d(e[1])] = d(e[2]); return hashParams; }

No se requiere JQuery / plug-in

Actualizar:

Ahora estoy recomendando el plugin jQuery BBQ según la respuesta de Hovis. Cubre todos los problemas de análisis hash.


Es posible que desee comprobar jsuri . Parece que me funciona bien.


Esta API jquery analiza las etiquetas hash: https://jhash.codeplex.com/

// get the "name" querystring value var n = jHash.val(''name''); // get the "location" querystring value var l = jHash.val(''location''); // set some querystring values jHash.val({ name: ''Chris'', location: ''WI'' });



Estuve revisando un montón de respuestas para este problema y terminé ensamblandolas usando una línea con reduce :

const hashObj = location.hash.replace(''#'', '''').split(''&'').reduce((prev, item) => Object.assign({[item.split(''='')[0]]: item.split(''='')[1]}, prev), {});

Obviamente hay mucho sucediendo en esa línea. Puede ser reescrito así para clariry:

const hashObj = location.hash.replace(''#'', '''').split(''&'').reduce((prev, item) => { return Object.assign({[item.split(''='')[0]]: item.split(''='')[1]}, prev); }, {});


Haz esto en Javascript puro:

var hash = window.location.hash.substr(1); var result = hash.split(''&'').reduce(function (result, item) { var parts = item.split(''=''); result[parts[0]] = parts[1]; return result; }, {});


Mi respuesta a esta pregunta debe hacer lo que estás buscando:

url_args_decode = function (url) { var args_enc, el, i, nameval, ret; ret = {}; // use the DOM to parse the URL via an ''a'' element el = document.createElement("a"); el.href = url; // strip off initial ? on search and split args_enc = el.search.substring(1).split(''&''); for (i = 0; i < args_enc.length; i++) { // convert + into space, split on =, and then decode args_enc[i].replace(//+/g, '' ''); nameval = args_enc[i].split(''='', 2); ret[decodeURIComponent(nameval[0])]=decodeURIComponent(nameval[1]); } return ret; };


Salida: barbacoa jQuery

jQuery BBQ está diseñado para analizar elementos de la url (cadena de consulta o fragmento) y va un poco más lejos para simplificar el historial basado en fragmentos. Este es el plugin de jQuery que Yarin estaba buscando antes de armar una solución de js pura. Específicamente, la función deparam.fragment() hace el trabajo. ¡Echar un vistazo!

(El sitio de soporte en el que estoy trabajando utiliza una búsqueda asíncrona, y como BBQ hace que sea trivial meter objetos enteros en el fragmento, lo utilizo para ''persistir'' mis parámetros de búsqueda. Esto le da a mis usuarios estados de historial para sus búsquedas, y también les permite marcar búsquedas útiles. Lo mejor de todo es que cuando el control de calidad encuentra un defecto de búsqueda, pueden enlazar directamente a los resultados problemáticos.