gpt4 book ai didi

javascript - 为什么可以提交这个表单? (火狐)

转载 作者:行者123 更新时间:2023-11-28 03:09:34 26 4
gpt4 key购买 nike

我在 Firefox(版本 38.05)中遇到一个非常奇怪的错误。我有一个如下所示的表单,以及一段用于验证的 Javascript

<form action='#' onsubmit='return check()'>
<input type='text' name='asdf'/>
<input type='submit' name='jkl' value='Submit'/>
</form>

Javascript

function check(){
alert("asdf");
return false;
}

现在永远不应该提交此表单。但在 Firefox 中,如果您遵循以下过程,则可以在不禁用 Javascript 的情况下提交它:

  1. 点击提交
  2. 确认警报对话框
  3. 再次点击提交
  4. 选中复选框以防止出现更多警报窗口并单击“确定”
  5. 点击提交 --> 表单将被提交

这是错误还是功能?在 Chrome 中一切正常。如果这种行为是有意的,我该如何避免?

最佳答案

那么当 alert() 在被用户阻止的情况下被调用时,Firefox 和 Chrome 会有不同的行为!

虽然 Chrome 只是默默地失败,但当它被用户阻止时尝试在 Firefox 中提醒抛出异常。并且 onSubmit 处理程序仅在函数显式返回 false 时才被阻止。

一个有点脏的修复是:

function check() {
try {
alert('foo');
}
catch {
//User prevented alerts, fallback
showSomehow('foo'); //use a log, a div on the top of the page, ...
}
return false;
}

需要比我更有动力并深入研究规范才能知道谁是对的。

关于javascript - 为什么可以提交这个表单? (火狐),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31134361/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com