HTML5中新引进的window.postMessage方法来跨域传送数据
window.postMessage(message,targetOrigin) 方法是html5新引进的特性,可以使用它来向其它的window对象发送消息,无论这个window对象是属于同源或不同源,目前IE8+、 FireFox、Chrome、Opera等浏览器都已经支持window.postMessage方法。
调用postMessage方法的window对象是指要接收消息的那一个window对象,该方法的第一个参数message为要发送的消息,类 型只能为字符串;第二个参数targetOrigin用来限定接收消息的那个window对象所在的域,如果不想限定域,可以使用通配符 * 。
需要接收消息的window对象,可是通过监听自身的message事件来获取传过来的消息,消息内容储存在该事件对象的data属性中。
上面所说的向其他window对象发送消息,其实就是指一个页面有几个框架的那种情况,因为每一个框架都有一个window对象。在讨论第二种方法 的时候,我们说过,不同域的框架间是可以获取到对方的window对象的,而且也可以使用window.postMessage这个方法.
1、主页面
<script> window.addEventListener('message',function(e){ var data = e.data; alert(data.msg); },false); $(document).ready(function(){ var iframe=window.frames[0]; result .key="test"; result.msg= "1111"; iframe.postMessage(result,'*'); }) </script> <body> <iframe id="gameFrame" name="gameFrame" src="${url!}" height="'+h+'" width="'+w+'" frameborder="no" border="0px" marginwidth="0px" marginheight="0px" scrolling="no" allowtransparency="yes"></iframe> </body>
2、在iframe中我们添加如下js
window.addEventListener('message',function(e){ var data = e.data; alert(data.msg); window.parent.postMessage({key:'callback',msg:'ok'},'*'); },false);
相关推荐
本文将详细讲解"PHP main与iframe相互通讯类 同域 跨域"这一主题,以及如何利用提供的文件实现这一功能。 首先,我们要理解同域和跨域的概念。同域是指两个或多个页面的源(协议+域名+端口)相同,它们之间可以自由...
在标题提到的“跨域iframe通讯”中,主要探讨的是如何在主页面和嵌入的iframe页面之间传递信息,这两个页面可能来源于不同的域名。以下是一些关键知识点: 1. **window.postMessage()**: 这是HTML5引入的一个API,...
在HTML5中,`iframe`跨域通信是一个重要的特性,它允许不同的源(域名、协议或端口)之间进行安全的数据交换。`postMessage` API是实现这一功能的关键,为了解决传统`iframe`跨域限制的问题,提供了一种安全且灵活的...
- 当用户在`iframe`中进行导航操作时,可以通过`parent.history.pushState`或`replaceState`改变父窗口的历史记录,实现导航同步。 9. **CSS样式的影响**: - 父窗口可以通过CSS选择器影响`iframe`的样式,但反之...
这个库允许的高度与同跨域iframe来适应他们所...在iframe页面链接修复和支持iFrame与父页面之间的链接。 提供自定义的大小和滚动方法。 使家长地位和视口大小的iframe。 与ViewerJS支持PDF和ODF文档。 后备支持到IE8。
在现代Web开发中,跨域通信是一个常见的问题。由于浏览器的安全策略——同源策略(Same-origin policy)的存在,JavaScript在处理不同源之间的数据交互时会受到严格的限制。本文将详细介绍几种有效的跨域通信方法,...
在跨域通讯中,postMessage不仅可以用于两个网页之间,还可以在多个页面间传递信息。比如在一个主页面中嵌入了多个iframe框架,各个iframe页面之间就可以通过postMessage相互传递消息,而主页面也可以监听这些消息。...
本文实例讲述了JS实现iframe中子父页面跨域通讯的方法。分享给大家供大家参考,具体如下: 在非跨域的情况下,iframe中的子父页面可以很方便的通讯,但是在跨域的情况下,只能通过window.postMessage()方法来向其他...
在Web开发中,有时我们需要在不同的技术栈之间进行通信,比如JavaScript(js)与Adobe Flex。...在实际项目中,根据具体需求选择适合的通信策略,并确保安全性,是实现高效Iframe js 和 flex 通讯的关键。
接着,描述中提到的“支持同域与跨域通讯”是一个关键特性。同域意味着主页面和iframe的源(域名+协议+端口)相同,它们可以直接通过JavaScript进行通信。而跨域则需要额外的安全策略,如CORS(Cross-Origin ...
在多页面交互的场景下,`iframe`中的子页面与父页面以及与其他兄弟`iframe`之间的通信就显得尤为重要。本文将详细讲解如何实现`iframe`兄弟页面之间的相互调用。 首先,理解`iframe`的结构是关键。一个`iframe`元素...
但是,有时候我们仍然需要实现跨域通讯,比如在iframe嵌入外部页面时,主页面需要与iframe进行交互操作。本文将详细介绍如何使用JavaScript和PHP技术实现iframe和主页面之间的通讯,以及如何支持跨域的情况。 知识...
4. **iframe通讯**:iframe内嵌页面作为一个独立的域,可以使用`window.postMessage`方法进行跨域通讯。postMessage提供了一种安全的消息传递方式,可以用来从一个iframe向另一个iframe发送消息。此外,父页面也可以...
在某些应用场景中,比如集成第三方服务或者在单页应用中嵌入其他网页,我们可能需要在 Vue 应用与 iframe(内联框架)之间进行信息交互。本文将深入探讨如何在 Vue 项目中实现这种交互。 首先,`iframe` 是一种 ...
跨域 Iframe 通信解决方案,兼容主流和 IE 系列浏览器。 ☏ Usage 父页面 // 初始化父页面的信使 var messenger = new Messenger('parent', 'MessengerProject'); // 绑定子页面 iframe messenger.addTarget(iframe1...
在Web开发中,由于浏览器的同源策略限制,不同源的网页之间不能直接进行JavaScript的交互,但`postMessage`提供了一种安全的机制来实现这种通信。 ### 1. `postMessage`基本原理 `postMessage`允许一个窗口(例如...
Flex与JavaScript的交互通常涉及到在Flex应用中嵌入HTML页面或iframe,并通过这种方式与JavaScript代码进行通讯。 在Flex中,可以通过ActionScript调用JavaScript函数。Flex提供了几个API,如Externalinterface类,...
当涉及到Iframe时,有时我们需要在父页面与子页面之间进行交互,如调用各自的方法或访问数据。本文将详细探讨如何实现Iframe父页面与子页面之间的相互调用。 首先,理解window对象是关键。在浏览器中,每一个HTML...