`

Html跨域js封装,前端页面跨域js,postMessage实现跨域

阅读更多

 

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/

 

1
1
分享到:
评论

相关推荐

    H5 postMessage 实现iframe 跨域传递数据

    本文将深入探讨`postMessage`的工作原理,以及如何利用它来实现iframe跨域传递数据。 ### 一、跨域问题 在传统的Web环境中,由于同源策略的限制,JavaScript不能随意访问不同源(协议、域名或端口)的资源,这给...

    解决JS跨域访问IFrame的解决方案

    3. **PostMessage API**:HTML5引入的`postMessage` API为跨域通信提供了一种更灵活的方法。通过在父页面和IFrame页面之间使用`window.postMessage()`方法发送消息,另一方可以通过监听`message`事件来接收消息。...

    iframe+postMessage实现跨域通信

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

    利用HTML5的window.postMessage实现跨域通信

    HTML5的`window.postMessage`是解决跨域通信问题的一个重要机制。在Web开发中,由于浏览器的安全策略,不同源的页面之间默认不允许进行数据交互,但`postMessage`提供了一种安全的方式,允许来自不同源的脚本采用...

    html5 API postMessage 实现消息跨域推送

    在这个场景下,`postMessage`成为了实现消息跨域推送的关键技术。 `postMessage`的核心在于两个主要的概念:发送者和接收者。发送者是执行`postMessage`方法的窗口、iframe或者Worker对象,它负责创建并发送消息。...

    layer弹窗:top.layer弹窗到父页面跨域解决办法

    在跨域环境下,如果我们需要从子页面使用layer弹出一个窗口到父页面,就需要利用`postMessage`来传递信息。 步骤如下: 1. **子页面操作**: - 创建一个layer弹窗,但不立即显示,而是存储配置信息。 - 使用`...

    javascript插件 解决双向跨域问题

    总之,jcrossdomain插件提供了一种方便的方式来解决JavaScript的双向跨域问题,通过IFrame和window.postMessage API实现通信,让不同源的Web应用能够安全、高效地共享数据。对于需要在多个域之间进行数据交互的项目...

    postmessage解决iframe页面跨域

    综上所述,`postMessage`是JavaScript解决跨域通信,尤其是涉及iframe页面的关键技术。正确理解和使用它,能够帮助开发者构建更复杂、更安全的Web应用。在实际项目中,结合描述中提到的3_静态页面测试跨域_post...

    HTML5 postMessage+iframe实现文件跨域异步上传

    本篇将重点讲解如何利用HTML5的`postMessage`和`iframe`技术来实现文件的跨域异步上传。 `postMessage`是HTML5中一种强大的通信机制,它允许来自不同源的脚本采用异步方式进行有限的通信,可以解决同源策略带来的...

    html5 API postMessage跨域详解.pdf

    `postMessage`是现代Web开发中跨域通信的重要工具,它使得不同源的页面可以通过安全的方式来交换数据,这对于实现单页应用、嵌入式内容、第三方组件之间的交互等场景非常有用。同时,由于`postMessage`提供了源验证...

    JavaScript 跨域通信方法

    ### JavaScript父子页面跨域通信详解 ...而对于父子页面间的通信,则可以通过代理页面或`postMessage` API来实现。开发者可以根据实际情况选择最合适的技术方案,以确保Web应用的安全性和功能性。

    jquery跨域调用 js跨域调用

    2. HTML5的Window.postMessage:适用于两个窗口之间的跨域通信,如弹窗或iframe。 六、安全与性能考虑 跨域调用虽然方便,但也增加了安全风险,比如XSS(跨站脚本攻击)和CSRF(跨站请求伪造)。因此,开发者在使用...

    iframe跨域调用父窗口js.zip

    1. **HTML5的postMessage和message事件**:这是现代浏览器支持的一种跨域通信方式。在iframe中,我们可以使用`window.parent.postMessage(data, targetOrigin)`发送消息,其中`data`是传递的数据,`targetOrigin`是...

    js跨域解决方案

    4. **IFrame跨域通信**:利用`window.postMessage`方法,可以在属于不同源的两个IFrame之间进行通信。这种方法适用于页面嵌套场景,但不适用于跨域API调用。 5. **WebSocket跨域**:WebSocket协议本身支持跨域,...

    完美解决iframe跨域问题

    在互联网应用中,由于同源策略的限制,不同域名、协议或端口的网页之间无法直接进行通信。然而,有时我们需要在不同的域之间共享...在实际开发中,结合其他跨域技术,如`postMessage`,可以构建更健壮的跨域通信系统。

    js跨域的理解与实现

    总的来说,JavaScript跨域的实现方式多样,可以根据具体需求和环境选择合适的策略。JSONP适用于简单的数据请求,CORS适合复杂的跨域交互,代理服务器适用于服务器可控制的场景,而`document.domain`和`postMessage`...

    js跨域问题解决方案.

    JavaScript跨域问题,是Web开发中常见的一个挑战,由于浏览器的同源策略限制,JavaScript无法直接访问不同源的资源,这在实现某些功能时会带来不便。本文将深入探讨JavaScript跨域问题的原因、影响以及多种解决方案...

    iframe跨域通信--html5.postmessage

    `postMessage` API是实现这一功能的关键,为了解决传统`iframe`跨域限制的问题,提供了一种安全且灵活的方法。本文将深入探讨`iframe`跨域通信与`postMessage`的使用方法和应用场景。 首先,我们需要明白什么是跨域...

    借助于网上messenger.js完成可以跨域的Html嵌套调用

    `messenger.js`是一个轻量级的JavaScript库,设计用于在不同的源之间传递消息,从而实现跨域通信。它基于浏览器的`window.postMessage` API,这是一个安全的方法,允许来自不同源的脚本通过`postMessage`方法发送...

    Html5 postMessage实现跨域消息传递

    不过需要注意的是,尽管`postMessage`允许跨域通信,但仍然不能规避同源策略对JavaScript的一些限制,比如无法直接修改跨域页面的DOM。因此,`postMessage`通常配合其他技术(如CORS)一起使用,以实现更完整的跨域...

Global site tag (gtag.js) - Google Analytics