首页 > 其他分享 >浏览器2个标签页面如何通信,传递数据

浏览器2个标签页面如何通信,传递数据

时间:2024-12-29 21:30:27浏览次数:5  
标签:origin 浏览器 标签 window 消息 传递数据 窗口 event 页面

在Vue应用中,使用postMessage方法可以在两个不同的浏览器标签页之间进行通信。下面是一个简单的示例,展示如何在两个标签页之间发送和接收消息。

发送消息的标签页(Sender)

假设这是第一个标签页,我们将在这个标签页中发送消息到另一个标签页。

<!-- src/views/pageH/index.vue -->
<template>
  <div class='box'>
    <button @click="sendMessage">Send Message to Other Tab</button>
  </div>
</template>

<script lang='ts' setup>
import { ref } from 'vue';

const sendMessage = () => {
  const otherWindow = window.open('', 'targetWindowName'); // 这里需要知道目标窗口的名称或引用
  if (otherWindow) {
    otherWindow.postMessage('Hello from Tab 1', '*'); // 发送消息到目标窗口
  } else {
    console.log('Target window not found');
  }
};
</script>

<style lang='scss' scoped></style>

接收消息的标签页(Receiver)

假设这是第二个标签页,我们将在这个标签页中接收来自第一个标签页的消息。

<!-- src/views/pageI/index.vue -->
<template>
  <div class='box'>
    <p>Received Message: {{ receivedMessage }}</p>
  </div>
</template>

<script lang='ts' setup>
import { ref, onMounted } from 'vue';

const receivedMessage = ref('');

onMounted(() => {
  window.addEventListener('message', (event) => {
    // 检查消息来源是否可信
    if (event.origin !== window.location.origin) return;

    receivedMessage.value = event.data; // 更新接收到的消息
    console.log('Received message:', event.data);
  });
});
</script>

<style lang='scss' scoped></style>

注意事项

  1. 安全性:在使用postMessage时,确保检查消息的来源(event.origin),以防止跨站脚本攻击(XSS)。
  2. 窗口引用:在发送消息时,需要有目标窗口的引用或名称。如果目标窗口是通过window.open打开的,可以保存这个引用。
  3. 跨域限制postMessage可以用于跨域通信,但需要确保目标窗口的origin与发送消息的窗口的origin匹配,或者使用'*'作为目标origin(不推荐用于生产环境)。

通过这种方式,你可以在两个不同的Vue组件或标签页之间实现通信。

标签:origin,浏览器,标签,window,消息,传递数据,窗口,event,页面
From: https://www.cnblogs.com/jocongmin/p/18639593

相关文章

  • 后台上传后无法进入安装页面
    问题描述:在预装软件并默认安装到 www 目录后,安装成功但无法自动跳转到安装界面。无论是直接输入域名还是附加路径(如 /install),都无法正常进入安装页面,浏览器显示500错误。请帮助排查并解决此问题。解决方案:您好,根据您的描述,可能是由于PHP版本不兼容或环境配置问题导致的500错......
  • 解决方案 | 如何实现右键添加【管理系统环境变量】,更加方便快捷的直达环境变量修改页
       实现如上效果。本地新建一个bat文件,代码如下:(懒得编辑的直接下载做好的右键管理员身份运行就行:https://wwnb.lanzoul.com/il4DK2jbhwbi  ) @echooff::设置菜单名称、命令和图标路径set"menuName=管理系统环境变量"set"command=mshtavbscript:createobject......
  • 最新版Chrome浏览器加载ActiveX控件技术——alWebPlugin中间件V2.0.28-迎春版发布
     allWebPlugin简介   allWebPlugin中间件是一款为用户提供安全、可靠、便捷的浏览器插件服务的中间件产品,致力于将浏览器插件重新应用到所有浏览器。它将现有ActiveX控件直接嵌入浏览器,实现插件加载、界面显示、接口调用、事件回调等。支持Chrome、Firefox、Edge、360......
  • 如何使用浏览器开发者工具直接获取 .crx 文件?
    ggggggggggggggggggggggggggggggpt要使用浏览器开发者工具直接获取.crx文件,可以按照以下步骤操作:步骤1:打开Chrome网上应用店打开Chrome浏览器,访问Chrome网上应用店。搜索并选择你想要安装的插件。步骤2:获取插件的ID每个插件在Chrome网上应用店中都有一个......
  • 如何在一台不能联网的电脑上的chrome浏览器上安装插件?
    gggggggggggggggggggggggpt要在无法联网的计算机上安装Chrome插件,你可以按照以下步骤操作:步骤1:下载插件的CRX文件在联网的计算机上打开Chrome浏览器并访问Chrome网上应用店。搜索并找到你需要安装的插件。使用一个Chrome扩展插件下载工具(如CRXDownloader,或使......
  • 如何屏蔽掉页面的翻译功能?
    屏蔽页面的翻译功能,特别是针对前端开发,可以通过以下几种方法来实现:HTML标签属性设置:在<html>标签中加入translate="no"属性,如<htmltranslate="no">。这样做可以阻止整个页面被翻译。使用meta标签:在HTML文件的<head>部分加入<metaname="google"content="notranslate"......
  • 如何禁用在浏览器打开控制台?
    在前端开发中,禁用浏览器控制台并非一个推荐的做法,因为它可能侵犯了用户的权益,并且从技术上讲,无法完全阻止用户打开控制台。然而,如果你有特殊需求或想要增加一些障碍来阻止普通用户轻易地打开控制台,以下是一些可以尝试的方法:监听键盘事件:通过JavaScript监听键盘的特定按键组合......
  • 【CSS in Depth 2 精译_099】17.5:基于页面滚动的动画时间线设置(全新)+ 17.6:最后一点建
    当前内容所在位置(可进入专栏查看其他译好的章节内容)第五部分添加动效✔️【第17章动画】✔️17.1关键帧17.23D变换下的动画设置17.2.1添加动画前页面布局的构建17.2.2为布局添加动画17.3动画延迟与填充模式17.4通过动画传递意图17.4.1对用......
  • 页面提示 404 错误
    当网站页面提示404错误时,意味着请求的资源未找到。这种问题可能由多种原因引起,以下是详细的排查步骤和解决方案,帮助您快速定位并修复404错误。检查文件路径和链接:确认网页中的所有链接是否正确指向实际存在的文件或目录。例如,静态页面的URL是否与服务器上的文件路径匹......
  • 鸿蒙原生页面高性能解决方案上线OpenHarmony社区 助力打造高性能原生应用
    随着HarmonyOSNEXT的正式推出,鸿蒙原生应用开发热度高涨,数量激增。但在三方应用鸿蒙化进程中,性能问题频出。为此,HarmonyOSNEXT推出了一整套原生页面高性能解决方案,包括Nodepool、HMrouter和DataCache 三大解决方案,并上架OpenHarmony开源社区,分别针对应用页面滑动、跳转、首页冷......