2011-03-29 39 views
0

我的目標是在用戶單擊鏈接並重新加載主頁面以返回到以前的內容時打開一個新窗口。下面的第一個代碼片段適用於IE和FireFox,但不會在Safari中彈出一個新窗口。第二個代碼片段適用於所有3種瀏覽器,但在Safari中不執行history.go(-1);返回到主窗口上的上一頁。JavaScript表單onload在Safari中不起作用

此外,在第二個片段中,如果我將「返回true」;之後「history.go(-1);」 history.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() 
%> 
------------------------------------------------------------------------------------------- 
+0

」/>
Ryan 2011-03-29 17:00:40

回答

0

嘗試

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

然後嘗試從服務器返回<script>opener.history.back()</script>當您提交 最後給你的形式提交按鈕,並嘗試一下它,而不是提交表單 document.getElementById('subbut').click()

+0

謝謝!我也必須這樣做 - setTimeout(「history.go(-1)」,3000);做這個工作。 – Ryan 2011-05-20 00:07:34

+0

@Ryan - 還必須這樣做? history.back()或history.go(-1) - 它們應該是一樣的 – mplungjan 2011-05-20 07:52:24