在jQuery示例中使用Hash Urls

如今当今许多现代Web应用程序都使用哈希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()永远不会返回null)。

var match = location.hash.match(/^#?(.*)$/)[1];
if (match)
{
   //do stuff...
}

失败...

var hash = location.hash.match(/#(w+)/)[1];

问题:当哈希中有任何非拉丁字符或非字母数字字符时,返回错误结果。 例如,对于哈希#foo @ o#bar $%huh你好,将仅返回“ foo”。 location.hash为空时引发TypeError,因为.match()将返回null

var hash = location.hash.split('#')[1];

使用相同的测试哈希,它至少会得到“ foo @ o”部分,这意味着仅当哈希包含井号时它才会失败。 当没有哈希时,它不会引发错误,尽管它返回的是undefined而不是空字符串。

参考资料

得到您的哈希-防弹方式

From: https://www.sitepoint.com/hash-urls/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值