0

我目前遇到了一个仅在当前版本的 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

4

1 回答 1

0

NicolasIgot 在我的 Safari 论坛上找到了解决我问题的方法。

我刚刚autocomplete="off"在第二个表单上添加了表单标签,一切又开始工作了。我还没有在我的真正问题上尝试过,但它适用于我的简单测试用例,所以我对它有信心。

于 2012-05-09T14:48:55.953 回答