[英]How to get cross-domain communication to work in iframes?
我有一個基於iframe的在線幫助系統,該系統已經運行了好幾年。 使用IE8,它會阻塞一些調用location.toString()的JavaScript。 相同的代碼在IE6中可以正常工作。
具體來說,代碼是:
var iss = parent.left.location.toString();
var isInd = iss.indexOf("indexframe");
我收到“權限被拒絕”錯誤。 我認為問題與跨域通信有關,我不確定我是否完全理解。 整個程序包使用本地HTML和javascript文件在本地運行。 我不是想在一個域中控制框架在另一個域中。 或者也許我在假設這是問題的基礎上走了很遠。
有人可以幫助我了解解決此問題所需做的事情嗎?
通常,在訪問另一個iframe的內容時,我會使用以下內容:
var f = document.getElementById('IdOfIFrame'),
d = f.contentDocument||f.contentWindow;
alert(d.location);
如果iFrame和父文檔位於同一域中,則不應出現該錯誤。 它向我表明這些文檔位於不同的領域。
如果Iframe位於www.mydomain.com中 ,而文檔位於help.mydomain.com中,您將得到一個錯誤! 頁面必須認為它們在完全相同的域中。
在兩個文檔中,您都可以添加javascript來設置域:
document.domain = "mydomain.com";
使用Javascript,您可以在兩個頁面上都進入主機域。 這使您可以跨框架進行通信。 當然,如果頁面位於不同的HOST域中,則此方法將無效,並且javascript會引發錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.