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