Javascript 非常奇怪的Firefox行为:onclick+;随机滚动工作
如果我遗漏了一些非常基本的东西,很抱歉,我只是从JS开始 我有一个功能,可以在用户单击链接时使浏览器滚动到某个部分:Javascript 非常奇怪的Firefox行为:onclick+;随机滚动工作,javascript,firefox,scroll,onclick,mozilla,Javascript,Firefox,Scroll,Onclick,Mozilla,如果我遗漏了一些非常基本的东西,很抱歉,我只是从JS开始 我有一个功能,可以在用户单击链接时使浏览器滚动到某个部分: function scrollToRegisterForm(event) { const registerIntro = document.getElementsByClassName("register-intro")[0]; const registerIntroTop = registerIntro.offsetTop - 20; console.log(registe
function scrollToRegisterForm(event) {
const registerIntro = document.getElementsByClassName("register-intro")[0];
const registerIntroTop = registerIntro.offsetTop - 20;
console.log(registerIntro);
console.log(registerIntroTop);
window.scrollBy({
top: registerIntroTop,
left: 0,
behavior:'smooth'
});
};
然后,我使用事件侦听器将函数与链接相关联
document.addEventListener("DOMContentLoaded", function() {
var linkToRegister = document.getElementsByClassName("login-or-register__register")[0];
linkToRegister.onclick = scrollToRegisterForm;
});
这在Chrome上非常有效,但在FireFox(假设是Safari)上,这种行为很奇怪。当您单击链接时,它会执行函数,因为执行“console.log”行。虽然它不会滚动
如果我在控制台上输入函数名,它会滚动
如果我发疯了,开始点击链接,最终它会向下滚动
提前多谢
您可以在中找到它。问题是您的
href=“#”
会将您带到页面顶部,这会干扰您的功能
相反,您可以使用:
<a href="javascript:void(0)">link</a>
根据我的评论,我无法在JSFIDLE的FF中重现该问题 作为初始故障排除,请确保在HTML文档末尾包含此JS 否则,您可以尝试:
preventDefault()代码>
scrollBy
更改为scrollBy
函数滚动注册(事件){
event.preventDefault();
const registerIntro=document.getElementsByClassName(“寄存器简介”)[0];
常量registerIntroTop=registerIntro.offsetTop-20;
console.log(registerIntro);
console.log(registerIntroTop);
window.scrollTo({
顶部:registerIntroTop,
行为:'平稳'
});
};
document.addEventListener(“DOMContentLoaded”,function()){
var linkToRegister=document.getElementsByClassName(“登录或注册”)[0];
linkToRegister.onclick=scrollToRegisterForm;
});代码>
嗯
嗯
嗯
嗯
嗯
嗯
嗯
嗯
嗯
嗯
嗯
嗯
嗯
嗯
嗯
嗯
嗯
嗯
嗯
嗯
嗯
嗯
嗯
嗯
嗯
嗯
嗯
嗯
REGISTER HEADER
我猜是事件。preventDefault()
可以解决所有我无法在Foreox中重现的问题,请看这个小提琴:非常感谢!非常感谢!啊!专注于JS而忽略了这个基本的。。。