Html跨域js封装,前端页面跨域js,postMessage实现跨域
================================
©Copyright 蕃薯耀 2020-08-05
http://fanshuyao.iteye.com/
一、js文件:
crossOrigin.js:
/** * 跨域js * 使用postMessage实现html页面的js跨域调用 * */ /** * 封装向iframe嵌套的系统页面发起请求方法,该外部页面需要声明window.addEventListener("message", function(event){});监听事件来接收 * 本系统向外部系统发送请求,传递参数 * eventdata:传递的参数,一般就是json对象,如{aa : 11, bb : 22} * iframeTarget:document.getElementById("mapIframe").contentWindow */ var crossOriginHandler = { call : function (iframeTarget, eventdata) { if(iframeTarget == null || typeof iframeTarget == "undefined"){ console.error("iframe对象未定义"); } iframeTarget.postMessage(eventdata, "*"); }, callById : function (iframeId, eventdata) { if(iframeId == null || typeof iframeId == "undefined" || iframeId == ""){ console.error("iframe的id未定义"); } var iframeTarget = document.getElementById(iframeId).contentWindow; iframeTarget.postMessage(eventdata, "*"); } }; //使用示例:(首先得引入js)系统向iframe发起请求, /* crossOriginHandler.call(document.getElementById("mapIframe").contentWindow, { aaa : "aaa",//这个参数固定,不能修改 bbb : 123 }); 或者: crossOriginHandler.callById("iframe的Id值", { aaa : "aaa",//这个参数固定,不能修改 bbb : 123 }); */ /** * 监听外部系统的跨域回调请求 * 需要在本系统页面定义一个方法function crossOriginMessageHandler(data);处理外部系统的请求 * 外部系统回调方式:window.parent.postMessage({aa : "aa", bb : 123}, "*") * @param event * @returns */ window.addEventListener("message", function(event){ if(event){ if(window.crossOriginMessageHandler && (typeof window.crossOriginMessageHandler === "function")){ window.crossOriginMessageHandler(event.data); }else{ console.error("crossOriginMessageHandler(data)方法未定义"); } } }, false);
二、使用
1、引入js
<script type="text/javascript" src="../../static/js/crossOrigin.js"></script>
2、在页面定义回调的方法
/** * 处理跨域请求 * data : json对象 * {crossCallType: "xxx", params: {status: "1"}} */ function crossOriginMessageHandler(data){ console.log("页面接收请求,参数为===" + JSON.stringify(data)); if(data){ var crossCallType = data.crossCallType;//业务类型属性,区分哪个业务 if(crossCallType == "xxx"){ //自定义方法 }else{ alert("请求类型[" + crossCallType + "]不正确"); } } };
================================
©Copyright 蕃薯耀 2020-08-05
http://fanshuyao.iteye.com/
相关推荐
本文将深入探讨`postMessage`的工作原理,以及如何利用它来实现iframe跨域传递数据。 ### 一、跨域问题 在传统的Web环境中,由于同源策略的限制,JavaScript不能随意访问不同源(协议、域名或端口)的资源,这给...
3. **PostMessage API**:HTML5引入的`postMessage` API为跨域通信提供了一种更灵活的方法。通过在父页面和IFrame页面之间使用`window.postMessage()`方法发送消息,另一方可以通过监听`message`事件来接收消息。...
iframe+postMessage实现跨域通信 window.postMessage()方法安全地启用Window对象之间的跨源通信;例如,在页面和它产生的弹出窗口之间,或者在页面和嵌入其中的iframe之间。
HTML5的`window.postMessage`是解决跨域通信问题的一个重要机制。在Web开发中,由于浏览器的安全策略,不同源的页面之间默认不允许进行数据交互,但`postMessage`提供了一种安全的方式,允许来自不同源的脚本采用...
在这个场景下,`postMessage`成为了实现消息跨域推送的关键技术。 `postMessage`的核心在于两个主要的概念:发送者和接收者。发送者是执行`postMessage`方法的窗口、iframe或者Worker对象,它负责创建并发送消息。...
在跨域环境下,如果我们需要从子页面使用layer弹出一个窗口到父页面,就需要利用`postMessage`来传递信息。 步骤如下: 1. **子页面操作**: - 创建一个layer弹窗,但不立即显示,而是存储配置信息。 - 使用`...
总之,jcrossdomain插件提供了一种方便的方式来解决JavaScript的双向跨域问题,通过IFrame和window.postMessage API实现通信,让不同源的Web应用能够安全、高效地共享数据。对于需要在多个域之间进行数据交互的项目...
综上所述,`postMessage`是JavaScript解决跨域通信,尤其是涉及iframe页面的关键技术。正确理解和使用它,能够帮助开发者构建更复杂、更安全的Web应用。在实际项目中,结合描述中提到的3_静态页面测试跨域_post...
本篇将重点讲解如何利用HTML5的`postMessage`和`iframe`技术来实现文件的跨域异步上传。 `postMessage`是HTML5中一种强大的通信机制,它允许来自不同源的脚本采用异步方式进行有限的通信,可以解决同源策略带来的...
`postMessage`是现代Web开发中跨域通信的重要工具,它使得不同源的页面可以通过安全的方式来交换数据,这对于实现单页应用、嵌入式内容、第三方组件之间的交互等场景非常有用。同时,由于`postMessage`提供了源验证...
### JavaScript父子页面跨域通信详解 ...而对于父子页面间的通信,则可以通过代理页面或`postMessage` API来实现。开发者可以根据实际情况选择最合适的技术方案,以确保Web应用的安全性和功能性。
2. HTML5的Window.postMessage:适用于两个窗口之间的跨域通信,如弹窗或iframe。 六、安全与性能考虑 跨域调用虽然方便,但也增加了安全风险,比如XSS(跨站脚本攻击)和CSRF(跨站请求伪造)。因此,开发者在使用...
1. **HTML5的postMessage和message事件**:这是现代浏览器支持的一种跨域通信方式。在iframe中,我们可以使用`window.parent.postMessage(data, targetOrigin)`发送消息,其中`data`是传递的数据,`targetOrigin`是...
4. **IFrame跨域通信**:利用`window.postMessage`方法,可以在属于不同源的两个IFrame之间进行通信。这种方法适用于页面嵌套场景,但不适用于跨域API调用。 5. **WebSocket跨域**:WebSocket协议本身支持跨域,...
在互联网应用中,由于同源策略的限制,不同域名、协议或端口的网页之间无法直接进行通信。然而,有时我们需要在不同的域之间共享...在实际开发中,结合其他跨域技术,如`postMessage`,可以构建更健壮的跨域通信系统。
总的来说,JavaScript跨域的实现方式多样,可以根据具体需求和环境选择合适的策略。JSONP适用于简单的数据请求,CORS适合复杂的跨域交互,代理服务器适用于服务器可控制的场景,而`document.domain`和`postMessage`...
JavaScript跨域问题,是Web开发中常见的一个挑战,由于浏览器的同源策略限制,JavaScript无法直接访问不同源的资源,这在实现某些功能时会带来不便。本文将深入探讨JavaScript跨域问题的原因、影响以及多种解决方案...
`postMessage` API是实现这一功能的关键,为了解决传统`iframe`跨域限制的问题,提供了一种安全且灵活的方法。本文将深入探讨`iframe`跨域通信与`postMessage`的使用方法和应用场景。 首先,我们需要明白什么是跨域...
`messenger.js`是一个轻量级的JavaScript库,设计用于在不同的源之间传递消息,从而实现跨域通信。它基于浏览器的`window.postMessage` API,这是一个安全的方法,允许来自不同源的脚本通过`postMessage`方法发送...
不过需要注意的是,尽管`postMessage`允许跨域通信,但仍然不能规避同源策略对JavaScript的一些限制,比如无法直接修改跨域页面的DOM。因此,`postMessage`通常配合其他技术(如CORS)一起使用,以实现更完整的跨域...