【问题标题】:javascript form onload doesn't work in Safarijavascript 表单加载在 Safari 中不起作用
【发布时间】:2011-03-29 16:59:23
【问题描述】:

我的目标是在用户单击链接时打开一个新窗口,然后重新加载主页以返回之前的内容。下面的第一个代码 sn-p 在 IE 和 FireFox 中有效,但在 Safari 中不会弹出新窗口。第二个代码 sn-p 在所有 3 个浏览器中都有效,但在 Safari 中不执行 history.go(-1);返回到主窗口的上一页。

另外,在第二个 sn-p 中,如果我输入“return true;”在“history.go(-1);”之后历史.go(-1);确实有效,但没有弹出新窗口(target=""_blank"")。

有什么建议吗?

谢谢, 瑞恩

<html> <body> <form id="sso" method="POST" action="/apps/Integration/SsoUtil/SiteTransfer/SsoSignonSaml2Url.aspx" target="_blank" >
    <input type="hidden" size=150 name="SsoEncryptedData" value="<%=cd.ToSsoEncryptedB64()%>" /> </form> </body>

  <script>
    sso.submit();
    history.back();   </script> </html>


------------------WORKS IN SAFARI BUT DOESN"T RELOAD THE PARENT PAGE-----------------------
<%
Response.Write("<html>")
            Response.Write("<body onload=""document.getElementById('sso').submit();return true; history.go(-1);"">")

            Response.Write("<form id=""sso"" method=""POST"" action=""/Apps/Integration/SsoUtil/SiteTransfer/SsoSignonSaml2Url.aspx"" target=""_blank"">")

            Response.Write("</form><br/>")
            Response.Write("</body>")
            Response.Write("</html>")
            Response.End()
%>
-------------------------------------------------------------------------------------------

【问题讨论】:

标签: javascript safari


【解决方案1】:

试试

<script>
sso.submit();
setTimeout(function() { history.back();},1000)   
</script>

然后尝试在提交时从您的服务器返回&lt;script&gt;opener.history.back()&lt;/script&gt; 最后给你的表单一个提交按钮并尝试点击它而不是提交表单 document.getElementById('subbut').click()

【讨论】:

  • 谢谢!我也必须这样做 - setTimeout("history.go(-1)", 3000);完成这项工作。
  • @Ryan - 也必须这样做吗? history.back() 或 history.go(-1) - 他们应该工作相同
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多