js 监视 iframe 或 frameset 的内容变动(文盲第二版)
最近做一个项目,再页面内签入了一个 iframe,然后 iframe 内的内容经常变动,结果 iframe 的高度就无法固定了,需要根据内部显示的实际内容来定义 iframe 的高度。
经过测试,得到了以下代码,可以对 iframe 进行监视
// 使用了 jquery ,不使用的请自行修改为原生 js
$(ducument).ready(function(){
// 当页面加载完后判断页面内是否有 iframe
if ($('iframe').length) {
// 获取 iframe window对象的 document
var ifr = $(window.frames[0].document);
// 当 iframe document 加载完成是判断内容
ifr.ready(function () {
// 如果内容中包含 id=form1 的控件时,表示内容加载完成
// 这里可以换成其他任意标签
if (ifr.find('#form1').length) {
// 因为我用的是 .net 的页面,所以 form 表单的高度基本就是页面高度了
$('iframe:eq(0)').height(ifr.find('#form1').height() + 30);
}
});
}
}
使用 jquery 事件对文档进行监听,但这个监听方式不具有普适性,而且,需要同域名的内容支持。修改域名可以使用 document.domain,将内外页面的域名统一。
而且,这个监听方式缺陷还挺大的,只能监听一个 iframe,汗。。。。真想把这个文章 屏蔽了。
大家还是看看第二版的内容吧,使用 原生 js onload onunload 进行监听,普适性比这个好多了。