前端开发攻略-跨页面通信方法

前端实现跨页面通信的方法多种多样,以下是一些常见的方法:

  1. Broadcast Channel

    • 这是一个浏览器提供的API,允许不同页面之间通过广播的方式进行消息传递。
    • 可以创建一个频道,并在不同的页面之间发送和接收消息。
    • API使用简单,通过new BroadcastChannel(channelName)创建频道,通过postMessage方法发送消息,通过onmessage事件监听接收到的消息。
  2. Service Worker

    • Service Worker是一个在后台运行的脚本,能够与页面进行双向通信。
    • 可以将Service Worker作为消息的中转站,实现跨页面通信。
    • 需要在页面注册Service Worker,并通过它监听和发送消息。
  3. LocalStorage

    • LocalStorage是前端常用的本地存储机制,能够在不同页面之间存储和读取数据。
    • 当LocalStorage的值发生变化时,会触发storage事件。
    • 可以利用这个特性,在发送消息时将消息写入LocalStorage,然后在各个页面中通过监听storage事件来接收消息。
  4. Shared Worker

    • Shared Worker也是一种能够在后台运行的脚本,但与Service Worker不同的是,它可以被多个页面共享。
    • 通过Shared Worker,可以实现多个页面之间的通信。
    • 使用时需要创建一个Shared Worker实例,并通过它来发送和接收消息。
  5. IndexedDB

    • IndexedDB是一个低级的API,用于客户端存储大量结构化数据(包括文件/二进制数据)。
    • 它提供了异步的、基于事务的API来处理数据库对象。
    • 虽然主要用于数据存储,但也可以通过数据库操作来间接实现跨页面通信。
  6. Cookie

    • 通过设置相同的Cookie名称和值,不同的页面可以读取和修改Cookie的值,从而实现跨页面数据的传递和共享。
    • 但需要注意的是,Cookie的大小和数量都有限制,且可能会受到浏览器的隐私设置和安全策略的影响。
  7. Window.postMessage

    • Window.postMessage方法允许在不同来源的窗口之间进行安全的消息传递。
    • 可以通过这个方法在不同的浏览器窗口、标签页、iframe等之间发送和接收消息。
    • 使用时需要指定目标窗口和要发送的消息,以及可选的传输对象(用于携带额外的信息,如消息的来源等)。
  8. Websocket

    • 虽然Websocket主要用于实现实时通信,但也可以在不同页面之间建立长连接,从而实现跨页面通信。
    • 需要服务器端的支持,并且需要处理连接管理、数据序列化/反序列化等问题。
  9. Vuex(针对Vue项目)

    • 如果是在Vue项目中,可以考虑使用Vuex来管理状态。
    • 通过将监测数据存入Vuex的store中,在不同页面之间共享状态,从而实现跨页面通信。
    • 需要在Vuex中定义状态、mutations、actions等,并在页面中通过this.$store来访问和修改状态。

以上方法各有优缺点,具体选择哪种方法取决于项目的具体需求和场景。在选择时需要考虑通信的实时性、数据量、安全性、兼容性等因素。

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

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

相关文章

Leetcode day1.两数相加(2) 2.整数反转(7)

注意点:1.链表会出现其中一个已经为空,另一个缺还是有数据 2.相加时会出现进位操作 解法一、 利用队列的性质(基础不好 第一时间想到的) 很像队列的性质,先进先出,逐步计算。但是最后要换成链表样式。 …

【大数据技术基础 | 实验十四】Kafka实验:订阅推送示例

文章目录 一、实验目的二、实验要求三、实验原理(一)Kafka简介(二)Kafka使用场景 四、实验环境五、实验内容和步骤(一)配置各服务器之间的免密登录(二)安装ZooKeeper集群&#xff08…

AndroidAutoSize实战教程:今日头条屏幕适配方案详解

如何在项目中结合 AndroidAutoSize 来进行今日头条屏幕适配,我会具体讲解如何用 AndroidAutoSize 实现屏幕适配,并结合 Kotlin 代码举例分析。 通过 AndroidAutoSize 库来实现屏幕适配,确保在不同的屏幕尺寸、分辨率、密度下,应用…

【贪心算法】贪心算法五

贪心算法五 1.跳跃游戏 II2.跳跃游戏3.加油站3.单调递增的数字 点赞👍👍收藏🌟🌟关注💖💖 你的支持是对我最大的鼓励,我们一起努力吧!😃😃 1.跳跃游戏 II 题目链接&…

【Axios】如何在Vue中使用Axios请求拦截器

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

《业务流程--穿越从概念到实践的丛林》读后感一:什么是业务流程

2、分类法 分类法并不强调流程的横向分段和纵向分段的结构化关系,只是提供了一个流程分类分级的层级结构,让用户可以将一个个离散的流程装进这个分类框架里, 这种思路的代表是APQC PCF. APQC分类方法的第一层级就是企业价值链模型&#xff0c…

4.5 TCP 报文段的首部格式

欢迎大家订阅【计算机网络】学习专栏,开启你的计算机网络学习之旅! 文章目录 前言1 TCP 报文段的基本结构2 固定部分2.1 源端口与目的端口2.2 序号2.3 确认号2.4 数据偏移2.5 保留字段2.6 控制位2.7 窗口2.8 检验和2.9 紧急指针 3 可变部分3.1 选项3.2 填…

MySQL数据集成到广东省追溯平台的销售信息同步方案

销售信息同步--外购上报流程2:MySQL数据集成到广东省特殊食品电子追溯平台 在现代数据驱动的业务环境中,确保销售信息的准确性和及时性至关重要。本文将分享一个具体的技术案例,展示如何通过轻易云数据集成平台,将MySQL中的销售信…

Nginx配置https(Ubuntu、Debian、Linux、麒麟)

Ubuntu操作系统,Debian系统底层是Ubuntu,差异不大 ubuntu 安装nginx 1.安装依赖 sudo apt-get update sudo apt-get install gcc sudo apt-get install libpcre3 libpcre3-dev sudo apt-get install zlib1g zlib1g-dev sudo apt-get install openssl lib…

【优选算法 二分查找】二分查找入门详解:二分查找 & 在排序数组中查找元素的第一个和最后一个位置

二分查找 题目描述 题目解析 暴力解法 我们可以从左往右遍历一次数组,如果存在 target 则返回数组的下标,否则返回 -1; 时间复杂度 O(N),因为没有利用数组有序的特点,每次比较只能舍弃一个要比较的数&…

Linux镜像文件制作

本文介绍Linux镜像文件制作。 嵌入式系统开发调试及量产需要涉及到Linux镜像文件的制作,本文结合一个实例简要介绍Linux镜像文件的制作。 1.确定磁盘空间布局 在制作镜像文件之前应提前确定好磁盘空间布局,也就是地址空间划分,如这里的磁盘…

时频转换 | Matlab格拉姆角和场Gramian angular summation field一维数据转二维图像方法

目录 基本介绍程序设计参考资料获取方式 基本介绍 时频转换 | Matlab格拉姆角和场Gramian angular summation field一维数据转二维图像方法 程序设计 clear clc % close all load x.mat % 导入数据 x x(1:5120); % 本数据只选择5120个点进行分析 fs 6400 ; % 数据采样频…

vue3 vite ts day1

创建项目: npm init vitelatest 来创建项目 第二布: y 第三步:project name :项目名称 第四步:select a framework 选择框架 熟悉那种选择那种,当前选择vue 第五步:select a variant&…

elasticsearch-7.14.0集群部署+kibana

1、修改系统参数 用户对软件的内存和硬盘使用权限 vim /etc/security/limits.conf * soft nproc 655350 * soft nofile 655350 * hard nproc 655350 * hard nofile 655350修改最大线程数 vim /etc/sysctl.conf vm.max_map_count262144配置用户最大的线程数 vim /etc/security/…

深度学习 | pytorch + torchvision + python 版本对应及环境安装

Hi,大家好,我是半亩花海。要让一个基于 torch 框架开发的深度学习模型正确运行起来,配置环境是个重要的问题,本文介绍了 pytorch、torchvision、torchaudio 及 python 的对应版本以及环境安装的相关流程。 目录 一、版本对应 二…

如何学习游戏外挂编程

学习游戏外挂编程需要掌握一定的编程基础和相关知识。以下是一些学习游戏外挂编程的步骤和建议: 学习编程基础:首先,你需要学习一种编程语言,比如C或者Python。了解基本的编程概念,如变量、函数、循环和条件语句等。这…

LearnOpenGL学习(高级OpenGL -- 深度测试,模板测试,)

深度测试 深度缓冲用来防止被阻挡的面渲染到其他面的前面,深度缓冲就像颜色缓冲,在每个片段中储存了信息, 当深度测试(Depth Testing)被启用的时候,OpenGL会将一个片段的深度值与深度缓冲的内容进行对比。OpenGL会执行一个深度测…

MYSQL REPLACE INTO, INSERT IGNORE ON DUPLICATE 区别:

REPLACE INTO 不存在插入,存在删除旧的数据,插入一条新数据,返回新插入的自动编号: replace into:和 ignore 以及 duplicate 截然不同,不存在插入,存在则删除旧的,插入新的。不会保…

4. 设计模式分类

4.1 创建型模式 这类模式提供创建对象的机制,能够提升已有代码的灵活性和可复用性。 序 号 类 型 业务场景 实现要点 1 工 厂 方 法 多种类型商品不同接口,统一发奖服 务搭建场景 定义一个创建对象的接口,让其子类自 己决定实例化哪一个工厂类,工厂模式 使其创建过程延迟…

【JS】一些奇怪的野生方法(持续更新...)

文章目录 一、样式类二、API类三、一些属性四、一些奇怪但常用的功能 一、样式类 屏幕的可用高度:window.screen.availHeight 二、API类 获取绝对值:Math.abs(aaa)stopPropagation():阻止事件在DOM树中继续冒泡(就是停止事件&a…