我想知道是否有人对我现在遇到的情况有一些信息或反馈。 目前,我面临一个“双重表单提交”问题,在我点击“提交”按钮一次时,它会提交两次表单。这只在 IE9 中发生,但我已经测试了 Safari、Chrome(最新版本)、Firefox(版本 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以进行提交。
我已经联系了微软支持,他们声称这是“JavaScript兼容性问题”,因此我们需要微调我们的JavaScript以使我们的网站在IE9下正常工作。 (废话!)
无论如何,我的代码是:
onclick="this.disabled=true;document.forms[0].submit();"
这个问题本身是否就是有问题的?因为虽然其他浏览器没有抱怨,但可能这本来就不对吧?
我希望如果其他人也遇到类似的问题,能够给我更多的信息或反馈。 目前,如果我不将X-UA-Compatible更改为IE = 8,我可以更改我的代码为:
onclick="this.disabled=true;"
这也可以解决双重提交的问题,但我们还应该注意哪些IE9兼容性问题呢?
谢谢!