JQuery ScrollTop适用于chrome,但不适用firefox

JQuery ScrollTop works on chrome but not firefox

本文关键字:不适用 firefox chrome ScrollTop 适用于 JQuery      更新时间:2023-09-26

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

在撰写本文时,我的chrome版本是:45.0.2454.85
我的火狐浏览器是40.0.3

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

//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()里面缺少'event',但我也试过了,没有任何明显的变化。

因此,出于测试的目的,可以点击chrome和firefox导航菜单上的任何初学者链接来体会一下差异。

任何帮助或指向解决方案将非常感谢


Sotkra

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

它在Chrome上工作(可能在IE上),因为他们有一个全局属性window.event,但该属性不是跨浏览器,它不会在没有这个属性的浏览器上工作。

你应该删除event.preventDefault(),一切都会很好。