1、同域下父子页面的通讯javascript
1.父页面调用子iframe页面java
(1)经过iframe的Id获取子页面的dom,而后经过内置属性contentWindow取得子窗口的window对象,此方法兼容各个浏览器跨域
document.getElementById('iframe_Id').contentWindow // contentWindow 不能省略数组
(2)经过iframe的name直接获取子窗口的window对象浏览器
iframe_Name.window //window能够省略dom
(3)经过window对象的frames[]数组对象直接获取子frame对象异步
window.frames[0] 或者 window.frames["iframe_Name"]spa
2.子iframe页面调用父页面firefox
(1)经过parent或top对象获取父页面的window对象code
parent.window 或者 top.window //window 能够省略
3.主页面内兄弟iframe页面之间的相互调用
(1)同域下各个iframe窗口之间的元素和方法能够共享
4.父页面中检测子iframe的加载状况
(1)子iframe的onload事件
if (window.attachEvent) {//IE10及之前版本 document.getElementById('Id').attachEvent('onload', function () { mini.alert('IE'); }); } else if (window.addEventListener) {//全部主流浏览器除了IE10及之前版本 $('#Id')[0].addEventListener('load', function () { mini.alert('ss'); }); }
(2)使用定时器捕获子iframe的加载状态
var iFrm = document.getElementById('Id');
var fmState = function () {
if(document.readyState){//document.readyState用于判断文件是否加载完成,只读,firefox不支持
var state = iFrm.contentWindow.document.readyState;
if(state == "complete"){ return;}
window.setTimeout(fmState, 10);
}
}
//在改变src或者经过form target提交表单时,执行语句:
if (fmState.TimeoutI){ window.clearTimeout(fmState.timeoutI);}
fmState.timeoutI = window.setTimeout(fmState, 400);
注释:
1.延迟400毫秒的缘由?
答:由于javascript对DOM的操做是异步的,咱们必须等待脚本对DOM落实执行后才开始下一步。
400秒这个数取决与客户端的设备和浏览器的响应速度,好的设备的响应速度能在10毫秒之内甚
至更快,但100毫秒左右可能比较大众化,400毫秒应该是十分保守的了。
总之,较大的毫秒数能适合更多的用户设备情况,并能减小了客户端设备的工做量。
5.父页面中刷新子页面
(1)document.getElementById().src=
2、跨域下父子页面的通讯
1.暂时未涉及待定