Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 非常奇怪的Firefox行为:onclick+;随机滚动工作_Javascript_Firefox_Scroll_Onclick_Mozilla - Fatal编程技术网

Javascript 非常奇怪的Firefox行为:onclick+;随机滚动工作

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

如果我遗漏了一些非常基本的东西,很抱歉,我只是从JS开始

我有一个功能,可以在用户单击链接时使浏览器滚动到某个部分:

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而忽略了这个基本的。。。