我有一些jQuery JavaScript代码,我想只在URL中有一个哈希(#)锚链接时运行 . 如何使用JavaScript检查此角色?我需要一个简单的catch-all测试来检测这样的URL:
-
example.com/page.html#anchor
-
example.com/page.html#anotheranchor
基本上是这样的:
if (thereIsAHashInTheUrl) {
do this;
} else {
do this;
}
如果有人能指出我正确的方向,那将非常感激 .
18 回答
简单:
把以下内容:
如果URI不是文档的位置,则此代码段将执行您想要的操作 .
你试过这个吗?
(显然,
url
是您要检查的URL . )这将解决问题;)
将返回哈希标识符
...或者有一个jquery选择器:
以下是您可以定期检查哈希值的变化,然后调用函数来处理哈希值 .
大多数人都知道document.location中的URL属性 . 如果您只对当前页面感兴趣,那就太棒了 . 但问题是能够解析页面上的锚点而不是页面本身 .
大多数人似乎都错过了那些相同的URL属性也可用于锚元素:
上面的Partridge和Gareths评论很棒 . 他们应该得到一个单独的答案 . 显然,任何html Link对象都可以使用哈希和搜索属性:
要么
如果您需要在常规字符串变量上使用它并碰巧有jQuery,这应该工作:
(但它可能有点过头了..)
将此作为一种从任意类似URI的字符串中抽象位置属性的方法 . 虽然
window.location instanceof Location
为true,但任何调用Location
的尝试都会告诉您它是非法的构造函数 . 您仍然可以通过将字符串设置为DOM锚元素的href
属性来获取hash
,query
,protocol
等内容,然后使用window.location
共享所有地址属性 .最简单的方法是:
为方便起见,我写了一个小库,利用它来替换原生的
Location
构造函数,用一个将接受字符串并生成类似于window.location
的对象:Location.js通常点击首先比位置更改,所以点击后最好是setTimeOut来获取更新的window.location.hash
或者你可以听取位置:
我写了一个jQuery plugin,做了类似你想做的事情 .
这是一个简单的锚路由器 .
这是一个返回
true
或false
的简单函数(有/没有#标签):在这种情况下返回
true
.基于@ jon-skeet的评论 .
这是为当前页面URL测试此方法的简单方法:
有时你得到完整的查询字符串,如“#anchorlink?firstname = mark”
这是我获取哈希值的脚本: