如果访问的网址包含#,则不执行任何操作,否则重定向

时间:2012-11-28 15:14:18

标签: javascript redirect anchor

我希望我的单页横向网站的访问者被重定向到被认为是“主页”的部分(它位于正文的中心)。现在,当他们访问主网址时,他们只会看到横向网站的最左边部分。

问题是,我希望能够通过锚链接分享网站的其他部分,而不会将我的访问者重定向到#Home锚点。

所以我基本上想要的是:

  • 如果访问过的URL包含#,则不执行任何操作(因为所有锚链接都包含#)
  • 如果访问的URL不包含#,则重定向到#Home锚点。 (如果它不包含#,我认为该网址无效,或者他们只是访问主页而网址中没有锚点。

现在,我有这个JS代码:

if (window.location.href.indexOf('#') > -1){
    // do nothing   
}
else {
    top.location.href = "http://www.url.com/#Home";
}

这段代码有什么问题,以及我应该如何以正确的方式执行此操作?

2 个答案:

答案 0 :(得分:1)

我猜你的网页上有一个名为home的锚点。您可以尝试模拟点击它。像:

$('[href="#Home"]').click();
location.href = location.href+ '#Home';

答案 1 :(得分:1)

这将有效:

if(!!~window.location.href.indexOf('#')){
    //do nothing   
}else{
    top.location.href = "http://www.url.com/#Home";
}

!!~部分会将indexOf的结果转换为适当的布尔值。 (!!truefalse投射true-ish或false-ish值,代字号(~)将ìndexOf的输出转换为true -ish如果字符串包含针("#"))

这会在Google Chrome中的指定网址为我重新加载页面。