Ищете способ разбора пары ключей выхода из хэш/фрагмента URL в объект/ассоциативный массив с JavaScript/JQueryСинтаксический URL хэш-идентификатор/фрагмент с JavaScript
ответ
Отъезд: jQuery BBQ
JQuery барбекю предназначен для разбора вещей из URL (строка запроса или фрагмент), и идет немного дальше, чтобы упростить историю фрагментов на основе. Это плагин jQuery, который ищет Ярин, прежде чем он соединит решение pure js. В частности, функция deparam.fragment() выполняет эту работу. Взгляни!
(Сайт поддержки, над которым я работаю, использует асинхронный поиск, а потому, что барбекю делает тривиальным привязывать целые объекты к фрагменту, который я использую для «сохранения» моих параметров поиска. Это дает моим пользователям историю истории для их поиск, а также позволяет им создавать закладки полезные поиски Лучше всего, когда QA находит поиска дефекта они могут связать прямо на проблемные результаты)
@ Hovis - это действительно потрясающий плагин, и на самом деле я переключился на его использование. Даю вам ответ, поскольку это намного лучший вариант, чем функция с нуля. – Yarin
Я собираюсь начать использовать это. –
Барбекю не работает с JQuery 1.9+ и выдает исключения при загрузке. Он не обновлялся более трех лет. Я не уверен, что BBQ по-прежнему является хорошей рекомендацией. Вы можете взломать его, чтобы заставить его работать, см. Это: https://github.com/cowboy/jquery-bbq/pull/41 – nostromo
Я использую jQuery URL Parser библиотеку.
Это анализирует сам URL-адрес, а не элементы хэша. Полезно, но не то, о чем стоит исходный вопрос. –
Вот она, редактировался этого query string parser:
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;
}
Нет JQuery/плагин требуется
Update:
Я теперь рекомендовать jQuery BBQ plugin согласно ответу Hovis в , Он охватывает все проблемы синтаксического анализа.
Можете ли вы подробно остановиться на «проблемах хеш-анализа»?У меня такая же потребность, и я не вижу ничего плохого в вашем ответе. – Christophe
@ Кристоф - я честно не помню. Я уверен, что мой код работает нормально, но BBQ - это полный плагин с событиями hashchange, разбор строки запроса и т. Д., Поэтому, возможно, это то, что я имел в виду. – Yarin
Для базовой обработки ваш скрипт является удивительным !! Слишком часто мы по умолчанию используем библиотеки jQuery для выполнения основных задач. Благодаря! – SomethingOn
Мой ответ this question должен делать то, что вы ищете:.!
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;
};
Возможно, вы захотите зарегистрироваться jsuri. Кажется, это хорошо работает для меня.
Ссылка теперь мертва. –
Вы также можете использовать свойство .hash, продемонстрированное в этом примере scrolling table of contents для щелкнутой ссылки или для locatioin.
Это JQuery API делает синтаксического анализа хэш-тегов: 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'
});
используйте ответ gatoatigrado, это лучше, чем тот, который я опубликовал – SomeoneElse
Я искал через кучу ответов на эту проблему и ликвидируется брусчатки их вместе, используя одну линию с reduce
:
const hashObj = location.hash.replace('#', '').split('&').reduce((prev, item) => Object.assign({[item.split('=')[0]]: item.split('=')[1]}, prev), {});
В этой одной линии, очевидно, много чего происходит. Его можно переписать как это для clariry:
const hashObj = location.hash.replace('#', '').split('&').reduce((prev, item) => {
return Object.assign({[item.split('=')[0]]: item.split('=')[1]}, prev);
}, {});
Делайте это в чистом Javascript:
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;
}, {});
- 1. Синтаксический URL в Javascript
- 2. Синтаксический JSON из URL с JavaScript
- 3. Синтаксический JSONP с Javascript
- 4. Синтаксический URL в JavaScript или angularjs
- 5. Синтаксический войти с JavaScript
- 6. PHP - синтаксический дружественный URL
- 7. XML Синтаксический с помощью JavaScript
- 8. Синтаксический JSON из URL
- 9. Синтаксический URL в Yii
- 10. Синтаксический URL в какао
- 11. Синтаксический URL через Python
- 12. Javascript синтаксический анализ удаленных xml с & знаки
- 13. Синтаксический JSON с JavaScript не удается
- 14. Как Javascript Синтаксический синтаксис
- 15. JSON синтаксический Использование JavaScript
- 16. JavaScript JSON синтаксический Ошибка
- 17. Javascript Dynamic Regex Синтаксический
- 18. Синтаксический JSON в JavaScript,
- 19. Как Синтаксический содержимое XML с URL
- 20. Синтаксический URL с обработчиком webapp2 Python GAE
- 21. параметры Синтаксический URL в XML с BS4
- 22. Синтаксический URL A С Python URLParse Parse_qs
- 23. Url Синтаксический/Преобразование с Mod Rewrite
- 24. Синтаксический InputStream из URL с параметрами
- 25. Синтаксический InputStream из URL StAX
- 26. Clean синтаксический разбор запроса URL
- 27. Синтаксический JSON объектов в JavaScript
- 28. XML Синтаксический с Javascript Показать .childNodes
- 29. Синтаксический Javascript JSON
- 30. Синтаксический JSON Использование JavaScript
Вы, вероятно, могли бы сделать это с довольно простым регулярным выражением. Какой «формат» являются парами ключ/значение в URL-адресе? – gnarf
То же, что и в строке запроса - см. Мой ответ – Yarin