获取父窗口中包含自身的iframe
2011 8 19 05:31 PM 3911次查看
分类:JavaScript 标签:JavaScript
这个问题的难点在于页面B是框架自动生成的,我没法更改,只能在页面A里修复这个问题。
当然,这个问题的前提是页面A和B是同域的,因为JavaScript无权跨域访问。
于是问题就变成了如何在页面A中获取包含它的iframe对象。
查了半天资料后,我发现DOM确实没提供这个API,于是想到了另一个办法:获取父窗口中所有的iframe对象,遍历它们的,将其contentWindow属性与self比较,相等则表示是包含页面A的那个iframe。
急于下班,其他就不解释了,代码如下:
function resetHeight() {
if (!parent) {
return;
}
var iframes = parent.document.getElementsByTagName('iframe');
var length = iframes.length;
if (length == 0) {
return;
}
try {
for (var i = 0; i < length; ++i) {
var iframe = iframes[i];
if (iframe.contentWindow === self) {
parent.adjustHeight(iframe);
return;
}
}
} catch (e) {
}
}
最后说下document.getElementsByTagName('iframe')与frames的区别。前者得到的是HTMLIFrameElement对象的数组,每个对象都是一个DOM元素;后者得到的是DOMWindow对象的数组,也就是窗口的数组。而HTMLIFrameElement对象有个contentWindow属性,这个属性就是frames之中的窗口对象。
0条评论 你不来一发么↓