本文讨论都是在同域(同一域名,同一端口,同一协议)下进行。
以下我们讨论三个问题:
1、iframe子页面和父页面相互获取元素,
2、iframe子页面和父页面相互调用方法和变量。
一、iframe子页面和父页面相互获取元素
1、子页面获取父页面元素
//获取父页面 $("#id")的元素
Js原生:window.parent.document.getElementById ("元素id");
Jquery: $("#id", parent.document);
2、父页面获取子页面元素
//获取子页面 $("#id")的元素
Js原生:window.frames[iframe序号].document.getElementById("元素id");
Jquery:$("#iframeID").contents().find("#元素ID");
图1、获取元素
二、iframe子页面和父页面相互调用方法和变量
1、子页面调用父页面方法和变量
//调用父页面方法和变量
window.parent.func(); //调用方法
window.parent.value; //调用变量
2、父页面调用子页面方法和变量
//调用子页面方法和变量
window.frames[iframe序号].func(); //调用方法
window.frames[iframe序号].value; //调用变量
图2、调用方法和变量
说明:
1、iframe之间相互通信的前提是页面加载完成,所以我们从上面可以看到 父页面获取子页面元素,调用子页面方法、变量时使用了window.frames[0].onload =function(){}包裹来确保子页面加载完成。
2、父页面获取子页面iframe内容不止上述一种方法,还可以iframe的id和iframeName来获取,即document.getElementById('iframeId').contentWindow.document.getElementById('子页面中的元素ID');和iframeName.window.document.getElementById('子页面中的元素ID');
关键词: Iframe