数据交互与本地存储

326 查看

一:Iframe父页面与子页面之间的调用

专业词语解释如下:

    Iframe:iframe元素是文档中的文档。

    window对象: 浏览器会在其打开一个HTML文档时创建一个对应的window对象。但是,如果一个文档定义了一个或者多个框架

(即:包含一个或者多个frame或者iframe标签),浏览器就会为原始文档创建一个window对象,再为每个iframe创建额外的window对象,这些额外的window对象是原始窗口的子窗口。

contentWindow: 是指指定的iframe或者iframe所在的window对象。

   1. 父页面与子页面之间的调用。

现在我们可以慢慢做demo来分别讲解下,假如有iframe父页面为 iframe1.html, 父页面上有2个子页面 分别为iframe2.html 和 iframe3.html。

父页面iframe1.html代码如下:

子页面iframe2.html代码如下:

1.  子页面iframe2.html调用父页面 iframe1.html的元素如下代码:

    console.log($(‘.iframe1’,parent.document));

2.  子页面iframe2.html调用父页面iframe1.html的函数如下代码:

    parent.test2();

注意:父页面iframe1.html页面 中test2方法不能放在$(function(){}), 放在里面就调用不到。

3. 子页面iframe2.html调用自身的iframe(假如父页面有很多iframe,获取自身iframe不通过id或者name属性).

    1.首先我们可以在父页面上写一个函数 用来获取页面所有的iframe,之后进行遍历,进行判断当前的window对象是否相同。如下代码:

    2. 在子页面iframe2.html中如下调用父页面的方法 getFrame.

给iframe2设置属性 flag: true, 如下截图:

4. 父页面iframe1.html调用子页面 iframe2.html的元素及函数.

如下调用有误的:

console.log(document.getElementById(“iframe2”).contentWindow.b());

因为iframe2.html 有可能未加载完成,所以要等iframe2加载完成后再进行调用,

所以我们需要 iframe2.onload = function(){}; 这样再进行调用。为了兼容IE,我们可以如下封装一个方法: