浏览器跨站点通信(两个IP不同网站通信)

news2024/11/27 21:01:01

需求场景:OA系统会通过接口调用的方式将ERP系统的待办信息获取并显示在OA系统中。登录OA系统后,在OA系统中点击ERP系统的待办,会自动打开ERP系统业务处理页面,当ERP系统对应业务处理完毕,需要在OA系统中刷新待办记录(不再显示已经处理完的待办)。

将需求提炼为模型:网站A的页面page1与网站B的页面page2,在page1中点击按钮自动打开page2,当page2点击按钮关闭页面时向page1发送消息。

实现思路:在page1点击按钮打开page2页面时,调用postMessage方法,向page2发送消息。该消息中包含了page1的诸多信息(网站地址,发送的内容等等);当page2点击按钮时,同样调用postMessage方法,向page1发送消息。

实现效果:

实现代码:

 page1.html

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>网站A的page1</title>
	<script src="./js/jquery-1.8.2.min.js"></script>
</head>

<body>
    <h2>网站A的page1</h2>
    <div>
        <table>
            <tr>
                <button id="btn_oa">点击我打开网站B的page2页面</button>
            </tr>
        </table>
    </div>


    
    <script type="text/javascript">
	     var targetWindow;

        //打开网站B的page2页面,并发送一个信息
		 $("#btn_oa").on("click", function() {
             targetWindow = window.open('http://127.0.0.1:8088/page2.html');
			 
			 //延迟2秒钟等新页面打开后发送一个消息给新页面
			 setTimeout("postmessage()",2000 );  
        });

        function postmessage(){
		   targetWindow.postMessage('来自网站A的消息', 'http://127.0.0.1:8088/page2.html');//发送的消息内容  新页面地址
		};

				
	    // 接收消息
	    window.addEventListener('message', function(e) {
			 alert(e.data)
		});
			
    </script>
</body>

</html>

 page2.html

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>网站B的page2页面</title>
</head>

<body>
<div>
    <h2>网站B的page2页面</h2>
    <h3>点击下方提交按钮模拟提交操作</h3>
    <button id="btn_submit">提交</button>

</div>


<script src="./js/jquery-1.8.2.min.js"></script>
<script type="text/javascript">
    var obj;
    $("#btn_submit").on("click", function() {
        obj.source.postMessage('来自网站B的消息', obj.origin)
        window.close(); //关闭当前页面
    });

    //监听前一个页面发送过来的信息
    window.addEventListener('message', function(e){
        console.log(e);
        obj = e;
    });
</script>
</body>

</html>

代码解读:

http://127.0.0.1:8088 :网站B的访问地址

./js/jquery-1.8.2.min.js:项目中jquery包的地址

注:

1.page1和page2需要放在两个不同的项目里面(不同访问地址)

2.还有一种类似实现方法,是使用localStorage来存储数据,此方法只能用于同一个网站内。可以参考如下文章:

https://blog.csdn.net/liangmengbk/article/details/129465097

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/474772.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【环境配置】解决No module named ‘librosa‘

执行以下命令下载 pip install librosa我这里遇到了报错&#xff1a; Microsoft Visual C 14.0 or greater is required. Get it with “Microsoft C Build Tools”: https://visualstudio.microsoft.com/visual-cpp-build-tools/ 相关解决方案请参考&#xff1a; 【环境配置…

Python渗透测试编程基础——线程、进程与协程

目录 一、进程与线程的概念 1.进程 2.线程 3.进程和线程的关系 4.任务执行方式 二、Python中的Threading模块 1.线程模块介绍 2.Threading介绍 &#xff08;1&#xff09;方法和属性 &#xff08;2&#xff09;类方法 三、线程简单编写 1.流程 2.创建线程 &#x…

云原生技术在云计算中的应用探讨

第一章&#xff1a;云原生技术的概念与发展 云原生技术是一种针对云计算环境设计的应用程序开发和部署方法&#xff0c;主要目标是提高应用程序的可伸缩性、可移植性、高可用性和自动化管理等方面的特性。这种技术是近年来在云计算领域兴起的一个新的开发模式&#xff0c;它主要…

大模型“涌现”的思维链,究竟是一种什么能力?

听说最近AI大厂的开发人员和高校的NLP研究人员&#xff0c;都在琢磨&#xff0c;怎么让大模型“涌现”。那画面莫名就让我想到了程序员给服务器上香来保佑不宕机&#xff0c;都有种求诸于天的玄学。 所谓“涌现”,在大模型领域指的是当模型突破某个规模时&#xff0c;性能显著提…

商城管理系统的数据表从属关系+navicat建表操作+数据库文件转储并入代码操作

1&#xff0c;商城管理系统的数据表从属关系 在商城管理系统中&#xff0c;我们会面临属性分组的问题&#xff0c;商品表与分类表需要建立链接&#xff1b; 在控制类中我们将分类表中属性类传过来&#xff0c;与商品值params建立链接 public R list(RequestParam Map<Strin…

基于matlab使用波束成形对点对点 MIMO-OFDM 系统进行建模

一、前言 此示例展示了如何使用波束成形对点对点 MIMO-OFDM 系统进行建模。最近的无线标准&#xff08;如 802.11x 系列&#xff09;采用了多输入多输出 &#xff08;MIMO&#xff09; 和正交频分复用 &#xff08;OFDM&#xff09; 技术的组合&#xff0c;以提供更高的数据速率…

万字长文 - Nature 综述系列 - 给生物学家的机器学习指南 2 (传统机器学习方法如何选择)...

万字长文 - Nature 综述系列 - 给生物学家的机器学习指南 1 传统的机器学习 我们现在讨论几种关键的机器学习方法的优势和劣势。表1显示了不同机器学习方法的比较。我们首先讨论不基于神经网络的方法&#xff0c;有时被称为“传统机器学习”。 图3显示了一些传统的机器学习方法…

【算法基础】常见排序算法(持续更新中)

&#x1f466;个人主页&#xff1a;Weraphael ✍&#x1f3fb;作者简介&#xff1a;目前正在学习c和算法 ✈️专栏&#xff1a;【C/C】算法 &#x1f40b; 希望大家多多支持&#xff0c;咱一起进步&#xff01;&#x1f601; 如果文章有啥瑕疵 希望大佬指点一二 如果文章对你有…

【KVM虚拟化】· 图形化KVM安装linux

目录 &#x1f341;虚拟化技术 &#x1f342;KVM的整体结构 &#x1f342;KVM 的功能列表 &#x1f342;KVM 工具集合 &#x1f341;安装kvm虚拟化功能 &#x1f341;创建虚拟机 &#x1f990;博客主页&#xff1a;大虾好吃吗的博客 &#x1f990;专栏地址&#xff1a;KVM虚拟化…

FreeRTOS 信号量(二) ------ 计数型信号量

文章目录 一、计数型信号量1. 计数型信号量简介2. 创建计数型信号量①函数 xSemaphoreCreateCounting()②函数 xSemaphoreCreateCountingStatic() 3. 计数型信号量创建过程分析4. 释放和获取计数信号量 二、计数型信号量操作实验 一、计数型信号量 1. 计数型信号量简介 有些资…

数据结构与算法(小议递归)

文章目录 前言一、递归是什么&#xff1f;二、在什么时候适用递归1.测试一下 总结 前言 递归是一种常用的算法设计&#xff0c;递归就是一种循环推理。简单来说就是调用原算法本身的算法。 这里主要探讨递归的使用&#xff0c; 一、递归是什么&#xff1f; 用一个简单的例子来…

嵌入式代码查看分析利器---Understand

平时在开发嵌入式程序的时候大多数使用的都是keil软件&#xff0c;一般小的工程使用keil没感觉到有什么问题&#xff0c;但是当工程比较大的时候&#xff0c;比如移植了FreeRTOS系统或者LWIP网络系统时&#xff0c;代码全部编译一次就要花费很长世间&#xff0c;特别是开启了点…

CIKM论文解读 | 淘宝内容化推荐场景下对多场景全域表征的思考与应用

我们结合逛逛推荐场景中的具体问题&#xff0c;从多场景全域表征的视角进行了一系列的探索与内容推荐场景的应用&#xff0c;从全域表征的范围、信息迁移方式以及模型框架的应用等维度展开我们的优化工作&#xff0c;取得了阶段性的优化经验和业务效果。 背景介绍 淘宝逛逛自20…

鸿蒙混合打包。在现有安卓应用的基础上扩展鸿蒙的特性,以最快的速度布局鸿蒙生态!

鸿蒙混合打包 介绍 鸿蒙混合打包。在现有安卓应用的基础上扩展鸿蒙的特性&#xff0c;以最快的速度布局鸿蒙生态&#xff01; 参考&#xff1a;京东APP鸿蒙版上架实践。本项目只是这篇文章的一个验证&#xff0c;让更多的兄弟们可以少走弯路。 我尽可能把每一步的改动作为一…

【HarmonyOS】【JS】Tabs如何设置区分TabBar和TabContent的分割线不显示

【关键字】 Tabs&#xff0c;分割线 【问题描述】 使用JS开发HarmonyOS应用时&#xff0c;使用Tabs组件&#xff0c;默认自带TabBar和TabContent的蓝色分割线&#xff0c;由于蓝色分割线样式不可设置&#xff0c;若不想要此蓝色分割线&#xff0c;如何去除蓝色分割线&#xf…

搭建外网minecraft服务器方案

很多minecraft服务器主都想自己搭建一个外网可以访问的minecraft服务器&#xff0c;在没有外网IP的情况下&#xff0c;一般都是使用Logmein Hamachi方案。这种方案有它的弊端&#xff0c;需要客户机安装Hamachi&#xff0c;十分不方便。另外&#xff0c;免费版只支持5人&#x…

C++三大特性—继承 “基类与派生类之间的类型转换与赋值转换”

理解基类与派生类之间的类型转换是理解C语言面向对象编程的关键所在 继承 通过继承联系在一起的类构成一种层次关系&#xff0c;层次关系的根部有一个基类&#xff0c;其他直接或间接从基类继承而来&#xff0c;称为派生类。    继承(inheritance)机制是面向对象程序设计使代…

Spring RabbitMQ 实现消息队列延迟

1.概述 要实现RabbitMQ的消息队列延迟功能&#xff0c;一般采用官方提供的 rabbitmq_delayed_message_exchange插件。但RabbitMQ版本必须是3.5.8以上才支持该插件&#xff0c;否则得用其死信队列功能。 2.安装RabbitMQ延迟插件 检查插件 使用rabbitmq-plugins list命令用于查看…

C++引用进阶篇:让你的程序更加高效、安全、简洁

文章目录 前言1. 引用和临时数据&#x1f351; 什么样的临时数据会放到寄存器中&#x1f351; 关于常量表达式&#x1f351; 引用也不能指代临时数据&#x1f351; 引用作为函数参数 2. 为const引用创建临时变量3. const引用与转换类型&#x1f351; 引用类型的函数形参请尽可能…

SPFA 算法:实现原理及其应用

文章目录 一、前言二、SPFA 算法1、SPFA算法的基本流程2、代码详解 三、SPFA 算法已死 &#xff1f; 一、前言 SPFA算法&#xff0c;全称为Shortest Path Faster Algorithm&#xff0c;是求解单源最短路径问题的一种常用算法&#xff0c;它可以处理有向图或者无向图&#xff0…