《js》iframe之间跨域交互

8 篇文章 0 订阅

1. 父页面调用子页面

  直接通过iframe的url?param=abc 方式, 把值传到子页面.

https://www.cnblogs.com/sydeveloper/p/3712863.html

2. 子页面调用父页面

通过parent

html iframe 子页面调用父页面的方法_iframe子页面调用父页面函数_优雅码农的博客-CSDN博客

3. window.postMessage()

该window.postMessage()方法安全地启用Window对象之间的跨源通信;例如,在页面和它产生的弹出窗口之间,或者在页面和嵌入其中的iframe之间。 

通常,当且仅当它们源自的页面共享相同的协议、端口号和主机(也称为“同源策略”)时,允许不同页面上的脚本相互访问。window.postMessage()提供一种受控制的机制来安全地规避这种限制(如果使用得当)。

接收消息

<!DOCTYPE HTML>
<html>
<head>
    <meta charset="utf-8">
    <title>接收消息</title>
</head>

<script>
    window.onload = function() {
        var messageEle = document.getElementById('message');
        window.addEventListener('message', function (e) {
            if (e.origin !== "http://localhost:8080") {
                return;
            }
            messageEle.innerHTML = "从"+ e.origin +"收到消息: " + e.data;
        });
    }
</script>

<body>

<div id="message">
    等待接收消息!
</div>
</body>
</html>

发送消息

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>给iframe发送消息</title>

<script>
	window.onload = function() {
		var receiver = document.getElementById('receiverIframe').contentWindow;
		var btn = document.getElementById('send');
		btn.addEventListener('click',
				function(e) {
					e.preventDefault();
					var val = document.getElementById('text').value;
					receiver.postMessage("Hello " + val + "!","http://localhost:8080");
				});
	}
</script>
</head>

<body>
	<div>
		<input id="text" type="text" value="你好吗?" />
		<button id="send">发送消息</button>
	</div>
	<iframe id="receiverIframe" src="http://localhost:8080/receiver" width="500" height="60">
		<p>你的浏览器不支持IFrame。</p>
	</iframe>
</body>
</html>

替换iframe :

jQuery的load()函数
AJAX
<object>标签
<embed>标签
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值