gpt4 book ai didi

javascript - IE9双表单提交问题

转载 作者:可可西里 更新时间:2023-11-01 01:37:57 24 4
gpt4 key购买 nike

我只是想知道是否有人对我所处的情况有一些信息或反馈。目前我正面临“双重表单提交”问题,我点击“提交”按钮一次,它提交了两次表单。这只发生在 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/

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