检测锚点是否通向活动窗口。位置
拥有这样的 html:
<a class="someclass" href="some/url/absolute/or/relative">Blah</a>
... 以及这样的 javascript:
$("a.someclass").onclick(function() {
var link = $(this).attr("href");
if (link == window.location) // <<<<<<<<<<<<
doSomethingSpecial();
else
doOtherThing();
return false;
});
这段代码显然不起作用。
如何可靠地检测某个锚点是否指向当前浏览器位置?
以下是一些注意事项:
- 锚点的
href
可以是绝对的,也可以是相对的。 - URL 的片段应该被忽略。
Having such an html:
<a class="someclass" href="some/url/absolute/or/relative">Blah</a>
... along with such javascript:
$("a.someclass").onclick(function() {
var link = $(this).attr("href");
if (link == window.location) // <<<<<<<<<<<<
doSomethingSpecial();
else
doOtherThing();
return false;
});
this code obviously doesn't work.
How to reliably detect that some anchor is leading to the current browser location?
Here are some notes:
- Anchor's
href
could be either absolute or relative. - the fragments of the URLs should be ignored.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
问题是
$('a').attr('href')
始终返回相对路径。您需要使用原生的 obj.href 属性来获取绝对路径,剥离哈希值然后进行比较:编辑:
如果您想比较路径名,可以直接抓取它来自锚元素:
The problem is that
$('a').attr('href')
always returns the relative path. You need to use the nativeobj.href
attribute to get the absolute path, strip hashes and then compare:EDIT:
If you want to compare pathnames, you can grab it directly from the anchor element:
AFAIK,你无法检测到这一点。因为我可以编写 onclick 事件处理程序,然后编写导致当前位置本身的代码。在这种情况下,您不能真正依赖 href 属性。
AFAIK, you cannot detect that. Because I can write onclick event handler and then write the code that leads to the current location itself. In this case you can't really depend n the href attribute.
试试这个:
try this: