这些页面的关系和层次是:
-A.html(domain:domain1.com)
---- B.html(domain:domain2.com)
-------- C.html(domain: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”是不正确的?
答案 0 :(得分:0)
我看到的问题是你不能在FF中使用document.frames
。
另请注意,parent
和parent.parent
以及parent.parent.parent.parent.parent.parent
始终存在,即使没有框架,所以我认为很多条件都是不必要的。
尝试:
function updateHeight() {
var mainIframe = parent.parent.document.getElementById('mainIframe'),
mainDoc = mainIframe.contentDocument || mainIframe.contentWindow.document,
proxyIframe = mainDoc.getElementById('proxyIframe'),
proxyDoc = proxyIframe.contentDocument || proxyIframe.contentWindow.document;
newHeigh = proxyDoc.location.hash.substr(1);
mainIframe.style.height = newHeigh;
}
function canUpdateHeight() {
if(parent.parent.document.getElementById('mainIframe')
&& parent.document.getElementById('proxyIframe')) {
window.setInterval(updateHeight, 200);
}
}