Статьи

Использование Hash Urls с примером jQuery

В наши дни многие современные веб-приложения используют хеш-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.

Справочный материал

Получи свой хэш — пуленепробиваемый способ