我正在尋找調整其頁面上的iFrame的內容加載後。不幸的是,在iFrame中加載的內容來自不同的域。我試着用下面的代碼來調用函數在父窗口,但它拋出安全錯誤:從不同的域加載內容後可能調整iFrame大小?
<body onload="parent.document.someFunction(document.body.scrollHeight);">
是否有退出這個功能從其他域使用內容的可靠方式(我們有機會獲得這些域名,並可以FTP)還是我需要告訴客戶他們必須在自己的域名鏡像內容?
我正在尋找調整其頁面上的iFrame的內容加載後。不幸的是,在iFrame中加載的內容來自不同的域。我試着用下面的代碼來調用函數在父窗口,但它拋出安全錯誤:從不同的域加載內容後可能調整iFrame大小?
<body onload="parent.document.someFunction(document.body.scrollHeight);">
是否有退出這個功能從其他域使用內容的可靠方式(我們有機會獲得這些域名,並可以FTP)還是我需要告訴客戶他們必須在自己的域名鏡像內容?
請參閱這篇文章,我的答案:Calling a parent window function from an iframe
這是可能的,但不容易。你必須破解一些才能使其工作。
我相信,因爲您有權訪問框架域和框架頁面域,您將能夠使用document.domain-the-head技巧。
<script>
document.domain = "mydomain.com";
</script>
更新:
我可以只檢查以下內容?:
你已經把document.domain的<script>
在兩個頁面的頭?
兩者是否有完全相同的字符串,即都有"subdomain.mydomain.com"
或兩者都有"mydomain.com"
?通常情況下,您可以使用它來確保框架頁面與父頁面具有相同的文檔域。
從框架頁面調用父功能後,仍然出現安全錯誤嗎?
如果沒有,這是我用來調整我的框架的功能。它位於帶框頁面的頭部。
window.ResizeFrame = function (newHeight) {
if (window.parent && window.parent.document) {
var $frame = $(window.parent.document).find("#frame-id");
if ($frame.length) {
if (typeof (newHeight) === "number") {
$frame.css("height", newHeight);
}
}
}
};
讓我知道如何去!
不幸的是,這並沒有解決問題。 – 2012-02-29 18:38:27
我發佈了一些更多信息,瞭解我的方案如何工作。 – 2012-03-01 10:31:40
嘿那裏 - 所以這在我自己的域的不同頁面上工作,但不在客戶端上。不知道爲什麼,但我標記你的答案是正確的,因爲它在一個實例中起作用。謝謝!! – 2012-04-02 17:04:08