我有一个简单的 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/