Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.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停止工作_Javascript_Firebase_Firebase Authentication - Fatal编程技术网

刷新页面时JavaScript停止工作

刷新页面时JavaScript停止工作,javascript,firebase,firebase-authentication,Javascript,Firebase,Firebase Authentication,我有一段JavaScript代码: var input = document.getElementById("password_field"); input.addEventListener("keyup", function(event) { if (event.keyCode === 13) { event.preventDefault(); document.getElementById("login").clic

我有一段JavaScript代码:

var input = document.getElementById("password_field");
input.addEventListener("keyup", function(event) {
  if (event.keyCode === 13) {
   event.preventDefault();
   document.getElementById("login").click();
  }
});

firebase.auth().onAuthStateChanged(function(user) {
    if (user) {
        document.getElementById("user_div").style.display = "block";
        document.getElementById("login_div").style.display = "none";

        var user = firebase.auth().currentUser;

        if(user != null) {
            var email_id = user.email;
            var email_verified = user.emailVerified;
            document.getElementById('user_para').innerHTML = "You are logged in as<strong> " + email_id + "</strong>.";
            if (email_verified === false) {
                document.getElementById('user_verified').innerHTML = "<strong>You are not verified. Please check for an email from perason for a verification link. You will not be able to access anything without verification.";
            } else {
                document.getElementById('user_verified').innerHTML = "";
                document.getElementById('sandboxaccess').style.display = "block";
            }
        }
      
      
    } else {
        document.getElementById("user_div").style.display = "none";
        document.getElementById("login_div").style.display = "block";
    }
  });

function login () {
    var userEmail = document.getElementById('email_field').value;
    var userPass = document.getElementById('password_field').value;

    firebase.auth().signInWithEmailAndPassword(userEmail, userPass).catch(function(error) {
        // Handle Errors here.
        var errorCode = error.code;
        var errorMessage = error.message;
        window.alert("Error: " + errorMessage);
      });


    
}

function logout() {
    firebase.auth().signOut();
}
var input=document.getElementById(“密码_字段”);
input.addEventListener(“键控”,函数(事件){
如果(event.keyCode===13){
event.preventDefault();
document.getElementById(“登录”)。单击();
}
});
firebase.auth().onAuthStateChanged(函数(用户){
如果(用户){
document.getElementById(“user\u div”).style.display=“block”;
document.getElementById(“login\u div”).style.display=“无”;
var user=firebase.auth().currentUser;
如果(用户!=null){
var email_id=user.email;
var email_verified=user.emailVerified;
document.getElementById('user_para')。innerHTML=“您以身份登录”+电子邮件\u id+“”;
如果(已验证的电子邮件===错误){
document.getElementById('user_-verified')。innerHTML=“您未经验证。请查看perason的电子邮件中的验证链接。未经验证,您将无法访问任何内容。”;
}否则{
document.getElementById('user_-verified')。innerHTML=“”;
document.getElementById('sandboxaccess').style.display=“block”;
}
}
}否则{
document.getElementById(“user\u div”).style.display=“无”;
document.getElementById(“login\u div”).style.display=“block”;
}
});
函数登录(){
var userEmail=document.getElementById('email_字段')。值;
var userPass=document.getElementById('password_field')。值;
firebase.auth(){
//在这里处理错误。
var errorCode=error.code;
var errorMessage=error.message;
警告(“错误:+errorMessage”);
});
}
函数注销(){
firebase.auth().signOut();
}
它一开始工作正常,但当我刷新页面时,所有JavaScript都停止工作。它在ApacheLocalHost上工作得非常好(刷新也可以在localhost上工作)。解决这个问题的办法是什么

这里是刷新之前:

这里是刷新后:

“注销”按钮在两个窗口中都有


我认为代码是在加载DOM之前执行的。
这个怎么样:

document.addEventListener('DOMContentLoaded', function (){
  // your code
});

从程序中删除这行代码:

var user = firebase.auth().currentUser

您已经有一个
user
对象作为回调函数的参数。此处返回的currentUser实际上可能错误地为null,并覆盖传入的正确用户。

您在浏览器开发人员工具控制台中看到了哪些错误?这可能取决于存储在localstorage或会话存储数据中的firebase数据。所以,您可以尝试在控制台上发布可能出现的错误吗?似乎唯一可能的问题是刷新时,
用户
null
。您应该
console.log()
用户,并查看重新加载页面上的内容。我猜是
null
,因为您显示的代码中没有一个包含单词
textContent
错误在其他地方。请编辑问题以显示完整的代码,然后复制问题。我还建议添加更多日志记录,并共享记录结果,这样我们就可以看到加载页面时代码的执行情况。这并不能解释为什么它首先会工作。@RandyCasburn-脚本加载可能很棘手。。。谁知道OP在脚本上是否有延迟或异步标记,浏览器缓存也会让事情变得奇怪(尤其是在chrome中)@JaromandaX-如果不更改文件,这不太可能是缓存问题。
async
属性肯定会有这种效果。
defer
属性也不会导致此问题。在任何情况下,这个答案都不能解决“工作一次-不工作刷新”的问题。@RandyCasburn和JaromandaX-看看我的编辑,其中显示了刷新前和刷新后的内容。@AshishChandra-这些屏幕截图没有帮助-检查浏览器开发人员工具控制台如果它对您有帮助,在堆栈溢出时,习惯上,使用左边的按钮向上投票并接受正确答案。是的,我接受了,但我的声誉不到15岁,因为我是新用户,所以我的投票不会显示给您。您仍然可以使用复选标记接受正确答案,对吗?