我目前遇到了一个仅在当前版本的 Safari (5.1.5) 中出现的错误,并且想知道这里是否有人可以提出任何解决方法。我在 5.1.2 中对其进行了测试,它在那里运行良好,我不确定 5.1.3 和 5.1.4,因为我无法访问这些版本。
该错误需要三页,我将显示它们的来源,然后解释发生了什么:
FirstPageWithForm.htm
<form id="theForm" action="ActionHandler.ashx" method="post">
<input type="hidden" name="differentField" value="1234"/>
<input type="hidden" name="sameField" value="1111"/>
</form>
<script type="text/javascript">
var theForm = document.getElementById("theForm");
theForm.submit();
</script>
SecondPageWithForm.htm
<form id="theForm" action="ActionHandler.ashx" method="post">
<input type="hidden" name="differentField" value="5678"/>
<input type="hidden" name="sameField" value="1111"/>
</form>
<script type="text/javascript">
var theForm = document.getElementById("theForm");
theForm.submit();
</script>
动作处理器.ashx
public void ProcessRequest(HttpContext context)
{
var referrer = context.Request.UrlReferrer;
var differentField = context.Request["differentField"];
context.Response.Write(differentField);
if (differentField == "1234")
{
if (referrer.ToString().Contains("Second"))
context.Response.Write("Failure");
else
{
context.Response.Redirect("SecondPageWithForm.htm");
}
}
else
context.Response.Write("Success");
}
如您所见,两个表单具有相同的字段名称,但其中一个字段具有不同的值。但是,在运行此代码时,在 Safari 中,该值"1234"
被发送为differentField
而不是"5678"
. 我不相信这个错误与 .NET 有任何关系,但我没有一种简单的方法来测试另一种语言来确定这一点。
我已经尝试过的事情:
- 将表单提交代码放在一个函数中,然后调用它。
- 需要 Jquery 并在 $(document).ready() 函数中调用它。
- 将函数调用放在 setTimeout() 中。
- 用我按下的按钮替换该功能。
- 复制处理程序并将第二个表单发送到副本。
这些方法中的每一种都具有相同的效果,即打印“失败”而不是“成功”。
我将在 Safari 论坛上提交此错误(我没有 Apple 开发人员帐户,目前无法创建新帐户),但我希望有人可以帮助我想出一个合适的解决方法这个问题,直到他们解决它。
编辑:Safari 论坛错误报告:https ://discussions.apple.com/thread/3921507