点击页面跳转后网站重定向到主页

时间:2017-06-16 19:17:22

标签: javascript jquery modx-revolution

我的ModX网站上有一个页面,其中包含顶部的几个页面跳转链接,用于页面下方的一些文章。这是每个人的HTML:

<a class="jump" href="#article1">Article 1</a><br />
<a class="jump" href="#article2">Article 2</a><br />

<!-- and so on... -->

之前,IE 11中的链接根本不起作用,所以我在这里使用JavaScript来检查访问者是否正在使用IE并执行页面跳转:

var url = 'http://mywebsite/mywebpage';
$('a.jump').on('click', function(evt) {
    evt.preventDefault();
    var useragent = window.navigator.userAgent;
    if (useragent.indexOf("Trident") > -1 || useragent.indexOf("Edge") > -1) { // IE, Edge
        var href = $(this).attr('href');
        window.location.assign(url + href);
    } else { // anything else
        var href = $(this).attr('href');    
        href = href.substring(1, href.length);      
        window.location.assign('other/url#' + href); 
    }
});

我不确定这是否是检查IE的最佳方法,但现在它似乎正在运作。

这在Chrome和Firefox中运行得很好,但是如果我点击IE中的其中一个页面跳转它会正确跳转,但是经过一秒钟后它会重定向到我网站的主页。

我正在使用ModX Revolution 2.5.7。

编辑:Microsoft Edge似乎直接重定向到主页。 编辑2:更新了JS代码以正确检查Edge。

2 个答案:

答案 0 :(得分:2)

也许evt.preventDefault()就在click函数里面?

答案 1 :(得分:1)

  

我的ModX网站上有一个页面,顶部有一些页面跳转链接,用于页面下方的一些文章。

我不太明白你想要达到的目标。如果您希望访问者实际打开这些链接并阅读它们,为什么不只是插入真实的链接并使这个基本的html东西 - 浏览链接 - 工作?

如果这些文章已经在页面上(全部或部分)作为辅助内容出现在主文章的下方,您只想通过“跳转”到他们而不打开新标签或加载其他页面来吸引访问者的注意力,除<a href='#article1'></a>之外,使用<a name="#article1"></a>来指示您当前页面上应该滚动访问者的位置。

您提供的代码也有几个问题。

首先,检查IE / Edge版本的方式。正如在answer中指出的那样,“Trident”现在不是Edge用户代理字符串的一部分。因此,如果您想要定位Edge,则甚至不会触发您的条件。

此外,您不需要:(url + href).toString(),因为两个变量都是string类型。只需url + href

此外,感觉好像页面上还有另一个处理链接点击的脚本。我认为我们需要指向您相关网页的链接,以检查其中的内容。因此,如果您不介意共享链接,我们可以进行更深入的检查。