同源通信执行它们的页面位于具有相同的协议(http/https),端口(80/443),主机(通常为域名) 时,这两个脚本才能相互通信大多数情况下,网站就是内部的域名,所以是同源通信,可以相互访问 非同源通信不同域名,不同窗口,内嵌iframe(可能是外部域名地址) 这种就是非同源通信,window.postMessage() 方法可以安全地实现跨源通信 来自H5 api,没想到吧,h5还有个这样的方法*.* 语法otherWindow.postMessage(message, targetOrig...
我有一个带有iframe的页面,我需要一个框架内的按钮来重定向到另一个页面,如果我按照正常的方式重新加载iframe的内容,我需要的是主窗口到改变它的网址. 我没有在下面发布任何代码,因为我不知道这是否可能解决方法:是的,这是可能的.您必须从iFrame发送消息,当父级收到消息时,您就会执行某些操作.以下是一个示例:http://jsbin.com/necuvi/2/.以下是一些有关其工作原理的文档. https://developer.mozilla.org/en-US/docs/Web/API/Wind...
我们知道对窗口间通信施加的跨域限制以及在HTML5中引入postMessage. 但是,我们想知道iFrame是否还有其他方法可以调用其父窗口中定义的JavaScript函数. 我们发现postMessage对于调用多个方法有点笨拙,每个方法都需要多个参数. 如果不存在HTML5替代方案,则可以在PhoneGap中提供解决方案. PhoneGap详细信息: 我们在PhoneGap“index.html”页面中嵌入了一个iFrame. 从“index.html”,我们可以在iFrame中调用JavaScript函数或访问变量....
我对postMessage和MessageChannel感到困惑. 以下是MDN的一些代码:var channel = new MessageChannel(); var para = document.querySelector('p');var ifr = document.querySelector('iframe'); var otherWindow = ifr.contentWindow;ifr.addEventListener("load", iframeLoaded, false);function iframeLoaded() {otherWindow.postMessage('Hello from the main page!', '*', [channel.port2]); }channel.port1.onmessage = handl...
使用以下代码: HTML文件:<!DOCTYPE html><html><head><title></title><!--<script type="text/javascript" src="worker.js"></script>--><script type="text/javascript" src="run.js"></script></head><body><div id='log'></div></body></html>run.js:window.onload = function(){var worker = new Worker('worker.js');var log = document.getElementById('log');log.innerHTML += "<p>"+"test"+"</p>";worker.addEventListe...
Window.postMessage()有一个targetOrigin参数,可以设置为URI(以确保消息只到达特定的URL).它当然也可以设置为*(不推荐),但有没有办法指定允许的多个URI? 目前我只是为每个域启动一个postMessage()调用,但至少可以说这看起来有点hacky.解决方法:不幸的是你不能.您应该提供“*”或单个指定的域.
我有这个代码,我已将MessageEvent的原点设置为*,但仍然控制台提示阻止具有原点“AAAA”的帧访问具有原点“BBBB”的帧.协议,域和端口必须匹配.谁知道为什么?var size = {width: document.body.scrollWidth,height: document.body.scrollHeight}var evt = new MessageEvent("dimensionMessage",{"data": size,"origin":"*"});window.parent.dispatchEvent(evt);但是,如果我使用window.parent.postMessage(size,“*”),它可以工作....
实现目标:两个网站页面实现跨域相互通信 当前例子依赖于 jQuery 3.0 父页面代码:www.a.com/a.html<iframe id="myIframe" src="http://www.b.com/b.html"></iframe> <script> var $myIframe = $(#myIframe); // 注意:必须是在框架内容加载完成后才能触发 message 事件哦 $myIframe.on(load, function(){var data = {act: article, // 自定义的消息类型、行为,用于switch条件判断等。。msg: {subject: 跨域通信消息收到了有木有...