[ASP.NET]JavaScript window.opener.location.href Cross Site 兩個視窗瀏覽器跨網站問題

[ASP.NET]JavaScript window.opener.location.href Cross Site 兩個視窗瀏覽器跨網站問題

今天趕東西時,遇到的狀況,在 A 網站(ex: http://aaa/a.aspx),
的 a.aspx 頁面,透過觸發彈出 window.open 到 B 網站 b.aspx
a.aspx

<div>
      <a onclick="window.open('http://a/c.aspx';self.close();</script> ", "完成!"));

沒想到一執行,就發生JavaScript錯誤,而且關閉視窗跟 母頁面轉到別頁,也沒有運作起來,
就出現以下的錯誤畫面。 (錯誤:沒有使用權限)

image

 

後來就想會不會是因為跨網站(Cross SIte,Cross WEB)的關係,所以無法執行這段,
就只好上網來找解決方案,很幸運的找到了這篇 window.opener.location - access denied
就把click後的程式改為如同 Patrik Duditš 提供的方式,就能解決這個安全性限制的問題。

csm.RegisterStartupScript(this.GetType(), "Close", String.Format("<script>alert('{0}!');this.windowopenertop = window.opener.top; this.windowopenertop.location.href='http://a/c.aspx';self.close();</script> ", "完成!"));

 

參考資源:
window.opener.location - access denied
在子視窗中關閉子視窗並更新母視窗 - 孤影棧
關閉popup視窗同時更新原本的視窗 - 孤影棧