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

Website redirecting to homepage after clicking on a page jump

我的 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。

也许 evt.preventDefault() 就在点击函数内?

There is a page on my ModX website that includes a couple of page jump links at the top for a few articles that are further down the page.

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

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

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

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

你也不需要这个:(url + href).toString() 因为两个变量都已经是字符串类型了。就 url + href.

而且,感觉好像页面上还有另一个脚本处理link的点击。我认为我们需要 link 到您的相关页面以检查那里发生了什么。所以,如果您不介意分享 link,我们可以进行更深入的检查。