背景
這個頁面的關係和層次結構是:失敗設置父母的父母的iframe的高度在Firefox
-A.html(域名:domain1.com)
---- B中。 HTML(域名:domain2.com)
-------- C.html(域名:domain1.com)
更重要的是,
B.html通過Iframe包含在A.html中(iframe的id是「mainIframe」); C.html通過iframe包含在B.html中(iframe的id是「proxyIframe」);
問題
我有以下功能C.html(iframe的ID爲 「proxyIframe」):
function updateHeight() {
mainIframe = parent.parent.document.getElementById('mainIframe');
newHeigh = parent.parent.frames["mainIframe"].frames["proxyIframe"].location.hash.substr(1);
mainIframe.style.height = newHeigh;
}
function canUpdateHeight() {
if(parent!=null && parent.parent!=null && parent.parent.document!=null &&
parent.parent.document.getElementById('mainIframe')!=null &&
parent.parent.frames["mainIframe"]!=null &&
parent.parent.frames["mainIframe"].frames["proxyIframe"]!=null){
window.setInterval("updateHeight()", 200);
}
}
的問題是:第二個函數內部的檢查將不會被通過,所以第一個功能也不會被觸發。 請注意,這些函數在IE7,Chrome11.x,Chrome16.x,Safari5.x中可用,但在Firefox中有問題。
問題
我想要做的是使上述職能的工作,但目前我不知道現在的問題。使用「parent.parent」是不正確的?
嗨wnwall,感謝您快速的解答。事實上,檢查父母的存在是不必要的,因爲它始終存在。對於獲取幀的方法,我沒有區分IE和FF。我會盡快部署更新,我認爲它應該工作,再次感謝!我會通知你,如果它的工作。 – Gary
嗨wnwall,在** parent.document.getElementById('proxyIframe')**,螢火蟲抱怨錯誤:權限被拒絕訪問屬性'文件'** **。我想你知道這個問題,因爲跨域,任何想法? – Gary
啊,對,不同的領域。那麼這是一個不同的問題,並不是一個容易解決的問題,這取決於你對每個域有多少控制。如果你完全控制了兩者,你應該可以在所有瀏覽器上運行,但是準備好將你的袖子捲起來:)。本文看起來像是一個很好的開始:http://www.cakemail.com/the-iframe-cross-domain-policy-problem/ –