В наши дни многие современные веб-приложения используют хеш-URL-адреса для добавления уникальности (например, тега страницы, раздела, действия и т. Д.) На страницу без ее обновления, которую вы можете идентифицировать. Это следует из получения параметров Url с помощью jQuery для передачи динамических данных на страницу через URL. Который до сих пор широко используется в WWW.
window.location.hash против document.URL
Давайте кратко рассмотрим оба, и ниже приведено регулярное выражение, которое вы можете использовать, чтобы получить хеш-тег.
//using window.location.hash
$.fn.urlHash = function()
{
return window.location.hash.replace('#','');
};
$.urlHash();
Важно: location.hash не является безопасным для IE (включая IE9). Также, если ваша страница содержит iframe, то после обновления вручную внутри содержимого iframe получает старое значение location.hash (для загрузки первой страницы), в то время как значение, полученное вручную, отличается от location.hash, поэтому может быть лучше получить его через document.URL.
//IE Proof - URL Hash Grab - returns complete hash value
$.fn.urlHash = function()
{
return document.URL.substr(document.URL.indexOf('#')+1);
};
$.urlHash();
В качестве примера для извлечения значения хеш-тега dayofweek вы должны сделать это так:
//in context - extract dayofweek hash
//eg url#dayofweek1 would return 1
if (document.URL.indexOf('#dayofweek'))
{
week = parseInt(document.URL.substr(document.URL.indexOf('#')+1).replace('dayofweek',''))-1;
$resParent.eq(week).showResources();
}
Еще один достойный путь
Это еще один приличный способ использования регулярных выражений (знак фунта необязателен, поскольку .match () никогда не возвращает ноль).
var match = location.hash.match(/^#?(.*)$/)[1];
if (match)
{
//do stuff...
}
Не удается …
var hash = location.hash.match(/#(w+)/)[1];
Проблемы: Возвращает неверные результаты, если в хэше есть какой-либо не латинский или не буквенно-цифровой символ. Например, для хеша # foo @ o # bar $% да привет, просто «foo» будет возвращено. Выдает TypeError, когда location.hash пуст, так как .match () вернет ноль
var hash = location.hash.split('#')[1];
С таким же тестовым хэшем он по крайней мере получит часть «foo @ o», что означает, что он потерпит неудачу только тогда, когда хэш содержит знак решетки. Когда хеша нет, он не выдает ошибку, хотя вместо пустой строки возвращает undefined.