【问题标题】:jQuery 'remove anchor before scroll' function not working in firefox but working perfect in chrome,safarijQuery 'remove anchor before scroll' 功能在 Firefox 中不起作用,但在 chrome、safari 中完美运行
【发布时间】:2015-11-14 12:27:37
【问题描述】:

我有一个 jquery 函数,可以删除 url 中的锚“#categorie”,以防止网站滚动到具有该 ID 的部分。 这在 Chrome 和 Safari 中完美运行。但是在 Firefox 中它没有,它确实有,但只是部分。

这是我点击的项目的html结构:

<div class="person kernteam abigael-verspoor">
    <div class="person-img">
       <a href="http://www.ludenstraining.nl/person1/#kernteam">
       <img src="person1"/></a>
    </div>
    <div class="person-info">
       <h3><a href="http://www.ludenstraining.nl/person1/#kernteam">Abigael Verspoor</a></h3>
       <p>programmamanager / trainer / coach</p>
    </div>
</div>

这是防止锚滚动发生的jquery代码:

  // right away before the browser can start scrolling!
  var hash = window.location.hash,
      target = hash.replace('#', '');

  // delete hash so the page won't scroll to it
  window.location.hash = "";

我尝试通过设置一个超时功能来修复它,让窗口滚动回 0 顶部,但这也不起作用,至少不一致。

要真正看到它,请访问此链接:http://www.ludenstraining.nl/over-ons/

在 chrome 和 safari 中,它可以完美运行。在 Firefox 中,它一开始似乎有效,但仅适用于第一个选项卡“kernteam”。在第二个和第三个选项卡中,您会看到它向下滚动到该人连接到的类别选项卡。

感谢任何形式的帮助!

【问题讨论】:

  • 如果你不想要它,你愿意和我们分享为什么它有哈希吗?
  • 因为我将 url 的哈希值放入了我在页面上使用的值中。否则我当然会删除它。
  • 所以使用数据属性:&lt;a href="...." data-team="kernteam" .... 或更改为#prefix_kernteam,这样它就不会转到 id="kernteam"
  • 谢谢我明白了,你让我朝着正确的方向前进。放置前缀会破坏链接,但我找到了解决方案,将锚链接“#”替换为“?”。

标签: javascript jquery html


【解决方案1】:

我能够对其进行修改,使其也可以在 Firefox 中运行。 其中最重要的部分是将链接上的锚点“#”替换为“?”。

这样做会阻止页面滚动到 Firefox 中具有该 ID 的元素。 为了从链接中提取值,我使用了这个:

var url = window.location.href;//get url
var urlsplit = url.split('?');//split url from '?'
var tab = urlsplit[1]; get the url part after '?'

它对我来说效果更好,因为您无需在页面加载之前删除锚点跳转。另外,您不会因为移除锚而无法正确重新加载。

感谢 mplunjan 帮助我找到这个解决方案。

【讨论】:

  • location.search.substring(1) 更有意义
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-23
  • 1970-01-01
  • 1970-01-01
  • 2018-06-24
  • 2012-07-20
相关资源
最近更新 更多