iframe用法,window.postMessage 跨窗口,跨iframe javascript 通信

 2023-09-25 阅读 19 评论 0

摘要:同源通信 执行它们的页面位于具有相同的协议(http/https),端口(80/443),主机(通常为域名) 时,这两个脚本才能相互通信 iframe用法,大多数情况下,网站就是内部的域名,所以是同源通信,可以相互访问 非

同源通信

执行它们的页面位于具有相同的协议(http/https),端口(80/443),主机(通常为域名) 时,这两个脚本才能相互通信

iframe用法,大多数情况下,网站就是内部的域名,所以是同源通信,可以相互访问

非同源通信

不同域名,不同窗口,内嵌iframe(可能是外部域名地址) 这种就是非同源通信,

window.postMessage() 方法可以安全地实现跨源通信

iframe打开本地html。来自H5 api,没想到吧,h5还有个这样的方法*.*

语法

otherWindow.postMessage(message, targetOrigin, [transfer]);

  1. otherWindow 其他窗口的一个引用,比如iframe的contentWindow属性、执行window.open返回的窗口对象、或者是命名过或数值索引的window.frames。

  2. message 将要发送到其他 window的数据,字符串,数字等 javascript 基本类型以及对象

  3. targetOrigin 通过窗口的origin属性来指定哪些窗口能接收到消息事件,其值可以是字符串"*"(表示无限制)或者一个URI。在发送消息的时候,如果目标窗口的协议、主机地址或端口这三者的任意一项不匹配targetOrigin提供的值,那么消息就不会被发送;只有三者完全匹配,消息才会被发送。这个机制用来控制消息可以发送到哪些窗口

用法

  1. 发送数据
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><input type="color" onchange="setMessage(this.value)">
<iframe id ='iframe' src="good.html"></iframe><script>// 发送消息var domain = 'http://localhost:63342';var iframe =  document.getElementById('iframe').contentWindow;var setMessage = function (color){iframe.postMessage(color,domain);}window.addEventListener('message',function(event){if(event.origin !== domain) returnconsole.log('main receive ' + event.data);})
</script>
</body>
</html>
  1. 监听事件,处理消息
<!DOCTYPE html>
<html lang="en"> <head> <meta charset="UTF-8"> <title>good</title> </head> <body> <h1 style="text-align: center;color: black;">看我在便颜色</h1> </body> <script> // 响应消息 window.addEventListener('message',function(event){ if(event.origin !== 'http://localhost:63342') return; document.body.style.backgroundColor = event.data; document.body.innerHTML = event.data; event.source.postMessage('good idea ',event.origin); },false); </script> </html> 

转载于:https://www.cnblogs.com/telwanggs/p/11289723.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/4/96162.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息