【问题标题】:Website redirecting to homepage after clicking on a page jump点击页面跳转后网站重定向到主页
【发布时间】:2017-06-16 19:17:22
【问题描述】:

我的 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()
  • 我之前有它,但它没有影响任何东西,所以我把它删除了。我刚刚又试了一次,结果还是一样。
  • onClick 函数的末尾添加return false 怎么样?
  • @loelsonk 恐怕这也行不通。

标签: javascript jquery modx-revolution


【解决方案1】:

也许 evt.preventDefault() 就在 click 函数内部?

【讨论】:

  • 我之前有它,但它没有影响任何东西,所以我删除了它。我刚刚又试了一次,结果还是一样。
  • 你可以无视我之前的评论。在我阅读了下面@curveball 的答案后,发现页面上有另一个脚本阻止了它的工作。我删除了其他脚本,现在它可以完美运行了。
【解决方案2】:

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

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

如果这些文章已经(全部或部分)作为主要文章下方的次要内容出现在页面上,并且您只想通过“跳转”到它们而不打开新标签或加载另一个页面来吸引访问者的注意力,只需在除了&lt;a href='#article1'&gt;&lt;/a&gt; 使用&lt;a name="#article1"&gt;&lt;/a&gt; 来指示您当前页面上应该将访问者滚动到的位置。

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

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

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

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

【讨论】:

  • 我编辑了我的帖子以反映我所做的更改以允许它检查 Edge,以及删除您提到的不必要的“toString()”调用。除此之外,事实证明,当您说页面上可能正在运行另一个脚本来处理链接点击时,您是正确的。错误地,我删除了该脚本以允许它在我可以从这里链接到它之前运行,但这确实是导致问题的原因。
  • 很高兴听到 :) 你想用所有这些东西实现的“跳跃”效果怎么样?它现在是否按您的预期工作?
  • 现在在包括 IE 和 Edge 在内的每个浏览器中都可以正常工作(修复代码后)。页面本身很长,包含不同的文章,因此需要将跳转链接放在页面顶部。
  • 太棒了! :) 祝你的项目好运!
  • 我需要它。谢谢! :)
猜你喜欢
  • 2023-04-08
  • 1970-01-01
  • 2018-08-26
  • 2017-11-03
  • 1970-01-01
  • 1970-01-01
  • 2015-08-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多