2015-09-20 234 views
0

我有一个简单的JS/Jquery脚本,允许用户浏览(通过散列菜单链接和ScrollTop)到页面部分的特定部分(在这种情况下,/ guides /部分)。该脚本在Chrome上运行得很好。然而,在Firefox上,它似乎没有被触发。JQuery ScrollTop适用于Chrome浏览器,但不适用于Firefox浏览器

在撰写本文时,我的Chrome版本是:45.0.2454.85
和我的火狐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); 
} 
} 

我读了另一个计算器线程Firefox不喜欢当函数()丢失“事件”中,但我想,也有没有任何明显的变化。

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

争取解决任何帮助或指针将不胜感激

问候
Sotkra

+0

您是否在控制台中发现任何错误? – Tushar

回答

4

的问题是,我们在调用event.preventDefault()navigateToTarget函数中,并没有一个名为event有变量。

它适用于Chrome(也可能在IE),因为它们具有全局属性window.event,但该属性不是跨浏览器,并且它不适用于没有此属性的浏览器。

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

+0

感谢您的澄清Buzinas。我不知道整个window.event的情况。我会更加关注这种类型的细节。 – Sotkra

+0

哇,我在选择答案作为正确答案之前犯了错误,没有三重检查一切。该代码现在无法在/ guides /页面之外工作。如果我是指南页面以外的地方,点击菜单链接不会触发任何内容。如果我在指南页面中,它可以正常工作。 – Sotkra

+0

好的,问题的关键是简单地摆脱event.preventDefault();我会回复你的问题,但我建议你在上面添加我的注释,以提高它的可见度。欢呼并再次感谢。 – Sotkra

相关问题