我有这个代码用于验证某些内容:
if (document.getElementById('ANYNUMBER').innerHTML > 5){
alert("You are doing something wrong.");
return false;
}
如果您继续以表单形式提交,则在第二次或第三次时,根据浏览器软件,您可以选择“阻止此页面创建其他对话框”,但在 Chrome 中,它仍然不会提交表单但在其他程序(例如 Firefox)中,它会停止alert() 对话框,但也允许其提交,从而导致问题。
如果此alert()仍在激活但由于对话框禁用而未显示,如何阻止表单提交?
提前致谢。
最佳答案
看来您在 Firefox 中遇到了潜在的错误:
https://bugzilla.mozilla.org/show_bug.cgi?id=633154
问题是,一旦用户禁用警报,尝试调用 alert()
将在 Firefox 中引发异常,而在 Chrome 中它只会忽略它。
解决这个问题的一种方法是使用 try/catch
block (尽管它确实感觉有点 hacky):
if (document.getElementById('ANYNUMBER').innerHTML > 5){
try {
alert( "You are doing something wrong." );
}
catch(e) {
}
return false;
}
此外,如果用户禁用警报,然后不知道出了什么问题以及为什么他们的表单未提交,您可能会遇到可用性问题。最好将消息显示在页面本身的某个位置。只是我的两分钱。
关于即使有人选择浏览器,Javascript也会停止提交提交按钮 "prevent this page from creating additional dialogs”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24986991/