javascript - JQuery ScrollTop 适用于 Chrome,但不适用于 Firefox

标签 javascript jquery google-chrome firefox scrolltop

我有一个简单的 JS/Jquery 脚本,允许用户导航(通过哈希菜单链接和 ScrollTop)到页面部分的特定部分(在本例中为/guides/部分)。该脚本在 Chrome 上运行得很好。然而在 Firefox 上,它似乎没有被触发。

在撰写本文时,我的 chrome 版本是:45.0.2454.85
我的 Firefox 是 40.0.3

相关网站的 URL:genesistutorials101.com
带有哈希值的链接可以在菜单下找到。
我正在运行的脚本:

//HASH # NAV
$(function(){

 if (window.location.hash) {
  var target = $(window.location.hash);
  navigateToTarget(target);
 }

 $('.nav-primary a[href*="#"]').on('click', function(event) {
    //console.log("testing");
  var href = $(this).attr("href");
  var target = $(href.substr(href.indexOf("#")));
  navigateToTarget(target);
 });
});

function navigateToTarget(target) {
 if( target.length ) {
  event.preventDefault();
  $('html, body').animate({
   scrollTop: target.offset().top - 155
  }, 1000);
 }
}

我在另一个 stackoverflow 线程上读到,firefox 不喜欢 function() 内部缺少“事件”,但我也尝试过,没有任何明显的变化。

因此,出于测试目的,请继续单击 Chrome 和 Firefox 导航菜单上的任何初学者链接,以了解其中的差异。

任何帮助或指向解决方案的指示将不胜感激

问候
索特克拉

最佳答案

问题是您在 navigateToTarget 函数内调用 event.preventDefault(),并且那里没有名为 event 的变量.

它适用于 Chrome(也可能适用于 IE),因为它们有一个全局属性 window.event,但该属性不能跨浏览器,并且不适用于不支持的浏览器没有这个属性。

您应该删除event.preventDefault(),一切都会正常工作。

关于javascript - JQuery ScrollTop 适用于 Chrome,但不适用于 Firefox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32675682/

相关文章:

javascript - 如何使用 webpacker 在 Rails 6 中包含cropper js 库

javascript - 不能对 D3 v4 中的对象使用 attr

javascript - 将图像从一个 div 动画化到另一个 div

javascript - 使用 knockout 将 datepicker 的 mindate 绑定(bind)到另一个 datepicker

css - Chrome v52 html5 视频变长了吗?

对象和数组的 Javascript "Set"

Javascript 类返回数组,像 jQuery 一样创建库

html - 在 chrome 中嵌入 PDF 文件

javascript - 通过 Tampermonkey 在新标签页中打开点击链接的方法?

javascript - 在 .png 图像中发送信息然后通过 javascript 提取它?