在Chrome上使用location.reload无法正常工作,在Firefox中使用相同的代码可以正常工作



我正在使用Javascript制作一个Snake游戏,并检查用户是否触摸了边界,如果他触摸了游戏结束,则调用了一个游戏结束函数,该函数显示一个确认框,其中包含基于html文件语言的内容,因为我有2个html文件:一个用于法语,一个用于英语。

this.alert = alert;
this.gameOver = function() {
const langCheck = document.getElementById("html").lang;
if (langCheck === "fr") {
alert = confirm("ttPerdu!nn Votre longueur était: " + this.eaten);
} else {
alert = confirm(
"ttGame Over!nn Your snake length was: " + this.eaten
);
}
console.log(alert);
if (alert === true) {
document.location.reload(true);
} else {
document.location.reload(true);
}
};

在chrome中,当我单击"确定"或"取消"时,确认框会立即重新打开,并且不会重新加载(编辑:忘记提及,但单击确定后页面只是挂起(,即使控制台日志记录警报它返回true。那么,为什么这在 Chrome 上不起作用,而在 Firefox 上它运行良好?

我尝试了许多不同的位置.reload,当我像window.location.reload()一样研究它时,我看到了它,但它是完全相同的。

我被困在这里是因为正如我在 Firefox 中所说,它可以完美运行,这就是我在编写游戏时最初测试的地方,但当我完成时,我决定看看它在 Chrome 上是否有效,那就是我发现的时候。

您可以尝试location.reload()而不是(代码取自另一个在线解决方案(

setTimeout(function(){
window.location.reload();
},100); 

还考虑到您正在运行相同的代码(如果alert === true并且如果它不是真的,我会摆脱 if/else 并直接运行代码(如果这是您打算做的(

document.location.reload(true);

对于谷歌浏览器来说就可以了,你可以在这里查看小提琴的例子。

您还有其他选择

  1. setTimeout(function(){ window.location.reload(); });

  2. window.location.reload();

简短说明:

if (alert === true) {
document.location.reload(true);
} else {
document.location.reload(true);
}

无论结果如何,您都在这里执行相同的操作,因此您可以像下面这样简化代码。那里根本不需要if else

document.location.reload(true);

应该是

window.location.reload(false);

最新更新