iframe 与父窗口
来源:互联网 发布:刘昊然校服照网络疯传 编辑:程序博客网 时间:2024/06/05 10:31
如果iframe的出现是一个错误的话,iframe里边在来一个iframe那是错上加错,神话没有在远古的尘嚣中消失,却在怀具的今天不断上演。
生活永远是一个大染缸,一块白布下去,黑布出来,一块黑布下去,一块七色布出来。
contentWindow 兼容各个浏览器,可取得子窗口的 window 对象。
contentDocument Firefox 支持,> ie8 的ie支持。可取得子窗口的 document 对象。
页面A包含几个标签,在切换标签时,高度会变化。页面B用iframe引用了页面A,并且在A载入完成时,把iframe的高度设为了页面A的高度(调用一个自定义的adjustHeight()函数)。可是在切换标签时,iframe的高度并不会变化,就出现滚动条了。
这个问题的难点在于页面B是框架自动生成的,我没法更改,只能在页面A里修复这个问题。
当然,这个问题的前提是页面A和B是同域的,因为JavaScript无权跨域访问。
于是问题就变成了如何在页面A中获取包含它的iframe对象。
查了半天资料后,我发现DOM确实没提供这个API,于是想到了另一个办法:获取父窗口中所有的iframe对象,遍历它们的,将其contentWindow属性与self比较,相等则表示是包含页面A的那个iframe:
生活永远是一个大染缸,一块白布下去,黑布出来,一块黑布下去,一块七色布出来。
contentWindow 兼容各个浏览器,可取得子窗口的 window 对象。
contentDocument Firefox 支持,> ie8 的ie支持。可取得子窗口的 document 对象。
// 获取父窗口滚动高度$(parent.document).scrollTop()
在子级iframe设置 父级 iframe ,或 孙级 iframe 高度:
function showIframeH(){ var parentWin = parent.document.getElementById("test"); if(!parentWin) return false; var sub = parentWin.contentWindow.document.getElementById("test2"); if(!sub) return false; var thirdHeight = sub.contentWindow.document.body.offsetHeight; //第三层body对象 sub.height = thirdHeight; //设置第二层 iframe 的高度 var secondHeight = x.contentWindow.document.body.offsetHeight; //第二层body对象 x.height = secondHeight; //设置第一层 iframe 的高度 //alert(secondHeight); //alert('body: ' + x.contentDocument.body.offsetHeight + ' div:' + thirdHeight);}
页面A包含几个标签,在切换标签时,高度会变化。页面B用iframe引用了页面A,并且在A载入完成时,把iframe的高度设为了页面A的高度(调用一个自定义的adjustHeight()函数)。可是在切换标签时,iframe的高度并不会变化,就出现滚动条了。
这个问题的难点在于页面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之中的窗口对象。
- iframe 与父窗口
- Iframe父窗口与子窗口
- iframe与父窗口或其他iframe框架通信
- iframe与父窗口的交互.
- iframe与父窗口通信,并操作父窗口
- HTML中IFrame父窗口与子窗口相互操作
- HTML中IFrame父窗口与子窗口相互操作
- iframe&showModalDialog父窗口
- 父窗口操控iframe
- html iframe与父窗口的相互访问
- iframe与父级窗口的存取值
- HTML父窗口与IFRAME中变量互访
- 关于iframe与父窗口元素选取的问题
- jquery父窗口与iframe中js方法互相调用
- Iframe 父窗口 外面 调用 iframe子窗口的function
- 总结JavaScript(Iframe、window.open、window.showModalDialog)父窗口与子窗口之间的操作
- 总结JavaScript(Iframe、window.open、window.showModalDialog)父窗口与子窗口之间的操作
- 总结JavaScript(Iframe、window.open、window.showModalDialog)父窗口与子窗口之间的操作
- 【转】一个游戏程序员的学习资料
- 都云了,在云端我们能干点啥?
- C#:ComboBox中TextChanged事件不被触发的探究
- 青蛙又回到了井里
- grep,sed,awk命令练习
- iframe 与父窗口
- QT 的信号与槽机制介绍
- 目前使用ORACLE EBS的公司列表
- CSS符号属性
- SPDisposeCheck的用法:检查sharepoint代码中是否有未释放的对象
- 网络--QOS
- 色彩有六种标准色
- 设置MyEclipse编码
- 单向链表综合实例(建立,删除,查找)