通过js或jQuery,<iframe>子父窗口之间元素、方法、window的相互获取

条件:以下支持火狐浏览器,若在谷歌浏览器中使用,子窗口需要配置父窗口的跨域。

1、js在子窗口获取父窗口的window

window.parent

//此时可以调用父窗口的window方法,比如获取父窗口的高度window.parent.innerHeight,宽度window.parent.innerWidth,移动父窗口的位置等,具体的可以看本人博客的《获取浏览器窗口的尺寸及对浏览器窗口的一些操作》篇。


2、js在父窗口获取子窗口的window

$("#testiframe")[0].contentWindow==document.getElementById("testiframe").contentWindow==window.frames[0]

以上三种都可以获取子窗口的window,上面三种对应的<body>如下所示:

<div style="border:1px solid black;">

<iframe id='testiframe' height='400' width='600' src='xxxxx'></iframe>

</div>


3、jquery在iframe子页面获取父页面元素代码如下:

$("#objid",parent.document);


4、jquery在父页面获取iframe子页面的元素
代码如下:

$("#objid",document.frames('iframename').document)


5、js在iframe子页面获取父页面元素代码如下:

window.parent.document.getElementById("元素id");


6、js在父页面获取iframe子页面元素代码如下:

window.frames["iframe_ID"].document.getElementByIdx_x("元素id");


7、子窗口iframe内调用父窗口函数:

parent.func();

//前提是父窗口的js中必须有func()这个方法。


8、父窗口中调用子窗口函数

document.getElementById(子窗口 ifram 元素的ID值).contentWindow.子窗口中的方法()

子窗口 ifram 元素的name值.window.子窗口中的方法()


下面是我写的一个demo,大家在测试示例时,注意要在火狐浏览器下测试,原因请看本文的开头

父窗口页面  outter.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge,chrome=1">
    <title>Document</title>
    <script>
        function outter(){
            alert("这是父窗口中的方法");
        }
        function parent(){
            //Name.window.inner();          //第一种方法
            document.getElementById("ID").contentWindow.inner();
        }
    </script>
    
</head>
<body>
    <iframe src="inner.html" frameborder="1" id="ID" name="Name"></iframe>
    <hr>
    这是父窗口页面
    <br>
    <input type="button" value="点击调用子窗口的方法" id="but1" οnclick="parent()"><br>
</body>
</html>

子窗口页面   inner.html

<!DOCTYPE html>
<html lang="zh-cn">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<script>
	function inner(){
		alert("这是子窗口中的方法");
	}
	function child(){
		window.parent.outter();                 
	}
	</script>
</head>
<body>
	这是子窗口页面
	<br>
	<input type="button" value="点击调用父窗口的方法" class="but2" οnclick="child()">
</body>
</html>

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值