Javascript Modal在Firebase登录完成之前关闭并重新加载页面
我正在尝试使用Firebase建立登录。发生的情况是,当我提交带有用户名和密码的模式表单时,我的异步登录函数没有足够的时间来完成,并且在函数完成之前网站会被重新加载。当我将onsubmit更改为“return false”时,所有操作都正常,用户已登录,但表单不再以编程方式关闭。我想要的是它等待Firebase登录函数,然后关闭页面并重新加载 这是我的密码:Javascript Modal在Firebase登录完成之前关闭并重新加载页面,javascript,html,firebase,firebase-authentication,Javascript,Html,Firebase,Firebase Authentication,我正在尝试使用Firebase建立登录。发生的情况是,当我提交带有用户名和密码的模式表单时,我的异步登录函数没有足够的时间来完成,并且在函数完成之前网站会被重新加载。当我将onsubmit更改为“return false”时,所有操作都正常,用户已登录,但表单不再以编程方式关闭。我想要的是它等待Firebase登录函数,然后关闭页面并重新加载 这是我的密码: <button onclick="document.getElementById('login').style.display='b
<button onclick="document.getElementById('login').style.display='block'" type="button" class="btn btn-outline-success" id="admin-button">Admin</button>
<div id="login" class = "modal">
<form name="myForm" class="modal-content animate" method="post">
<div class="imgcontainer">
<span onclick="document.getElementById('login').style.display='none'"class="close" title="Close Modal" style="color:#a00000;">×</span>
</div>
<div class="container">
<h2 id="admin-title">Admin Login</h2>
<label for="uname"><b>Username</b></label>
<input type="text" placeholder="Username" name="uname" required>
<label for="psw"><b>Password</b></label>
<input type="password" placeholder="admin-code" name="password" required>
<button type="submit" id="login-button" onclick="validateForm()">Login</button>
</div>
<br/>
<div class="container" style="background-color:#f1f1f1">
<button type="button" onclick="document.getElementById('login').style.display='none'" class="cancelbtn" style="margin:10px">Cancel</button>
</div>
</form>
</div>
非常感谢你 我将假定
CheckIfSignedIn
函数关闭模式,因为从提供的代码中不清楚在何处执行此操作
如果signInWithFirebase
正在对您的Firebase进行异步调用,则validateForm
需要等待它。下面是一些伪代码,展示了如何执行此操作
async function validateForm(){
...
await signInWithFirebase(x,y);
CheckIfSignedIn();
}
我对Firebase本身并不熟悉,但所有异步代码的原理都是一样的
async function validateForm(){
...
await signInWithFirebase(x,y);
CheckIfSignedIn();
}
async function signInWithFirebase(x, y){
try {
const user = await firedb.auth().signInWithUsernameAndPassword(x, y);
return user;
} catch(error) {
return error.message;
}
}