簡體   English   中英

如何使跨域通信在iframe中正常工作?

[英]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會引發錯誤。

如果確實從站點訪問2個域, 並且您都擁有這兩個域,則可以創建一個xml文件,該文件指定應允許共享哪些域。 請參閱規格文檔 這種選擇加入的跨站點訪問不僅受Adobe支持(MS Silverlight適用於其中之一)。 這是Silverlight的支持規格

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM