我只是想知道是否有人对我所处的情况有一些信息或反馈。 目前我正面临“双重表单提交”问题,我点击“提交”按钮一次,它提交了两次表单。这只发生在 IE9 中,但我只针对 Safari、Chrome(最新版)、FF(5/6 版)、IE8 和 IE9 进行了测试。
代码如下:
<!DOCTYPE html>
<html lang="en-us" dir="ltr">
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" >
<title>IE9 test</title>
</head>
<body>
<h1>Testing</h1>
<form method="POST" id="submit_form">
<input type="text" name="x" value="xxxx" />
<input type="text" name="y" value="yyyy" />
<button type="submit" class="btn_sign_in" id="btn_logon" onclick="this.disabled=true;document.forms[0].submit();">Submit</button>
</form>
</body>
</html>
有问题的部分是:
onclick="this.disabled=true;document.forms[0].submit();"
代码在我的站里好久了,第一次遇到重复提交的问题,因为今年IE9才发布,可能这几天用IE9的人越来越多,所以收到用户的投诉关于这个问题。
最难的部分是双重提交问题并不总是可重现的。有时会重复提交,有时会提交一次。
我目前的解决方法是从:
<meta http-equiv="X-UA-Compatible" content="IE=edge" >
并更改为:
<meta http-equiv="X-UA-Compatible" content="IE=8" >
这会强制 IE9 使用 IE8 兼容性,并且它将正确执行 Javascript 以进行提交。
我已调用 Microsoft 支持,他们声称这是一个“Javascript 兼容性问题”,因此我们需要微调我们的 Javascript 以使我们的网站在 IE9 下正常工作..(Duh!)
无论如何,我的代码是:
onclick="this.disabled=true;document.forms[0].submit();"
一开始就错了?因为即使其他浏览器没有提示,但这可能是不正确的开始?
我希望如果有人也面临类似问题,可以提供更多信息或反馈。 目前,如果我不将 X-UA-Compatible 更改为 IE=8,我可以将我的代码更改为:
onclick="this.disabled=true;"
这也解决了双重提交问题,但是是否还有我们应该注意的 IE9 兼容性问题列表?
谢谢!
最佳答案
这段代码是错误的:
onclick="this.disabled=true;document.forms[0].submit();"
onclick Javascript 不保证正常提交也不会执行。为此,它需要返回 false,如下所示:
onclick="this.disabled=true;document.forms[0].submit(); return false;"
这种行为变化是 IE9 错误吗?这取决于,这可能取决于时间问题导致的法律行为。如果 DOM/Javacript 标准保证 document.submit() 是文档中所有执行的结束,这只是一个错误。我怀疑是这种情况。
关于javascript - IE9双表单提交问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7577542/