首页 > 其他分享 >vue 内嵌外部页面

vue 内嵌外部页面

时间:2024-08-21 13:53:49浏览次数:3  
标签:内嵌 vue embedded component Vue event HTML page 页面

  1. 参考:https://blog.csdn.net/weixin_43957384/article/details/131111544

Plan

  1. Embed an HTML page in Vue:

    • Use an iframe to embed the external HTML page within a Vue component.
  2. Communicate between Vue and the embedded HTML page:

    • Use postMessage API for communication between the parent Vue component and the embedded HTML page.

Vue Component

  1. Create a Vue component that includes an iframe to embed the external HTML page.
  2. Set up event listeners to handle messages from the embedded HTML page.
  3. Use postMessage to send messages to the embedded HTML page.

Embedded HTML Page

  1. Set up event listeners to handle messages from the parent Vue component.
  2. Use postMessage to send messages to the parent Vue component.

Code

Vue Component (MyComponent.vue)

<template>
  <div>
    <iframe ref="iframe" src="path/to/embedded.html" @load="onIframeLoad"></iframe>
  </div>
</template>

<script>
export default {
  methods: {
    onIframeLoad() {
      const iframe = this.$refs.iframe.contentWindow;

      // Listen for messages from the embedded HTML page
      window.addEventListener('message', this.handleMessageFromIframe);

      // Send a message to the embedded HTML page
      iframe.postMessage({ type: 'INIT', data: 'Hello from Vue' }, '*');
    },
    handleMessageFromIframe(event) {
      if (event.origin !== 'expected-origin') return; // Validate the origin
      const { type, data } = event.data;

      if (type === 'RESPONSE') {
        console.log('Message from iframe:', data);
      }
    },
  },
  beforeDestroy() {
    window.removeEventListener('message', this.handleMessageFromIframe);
  },
};
</script>

Embedded HTML Page (embedded.html)

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Embedded Page</title>
</head>
<body>
  <script>
    // Listen for messages from the parent Vue component
    window.addEventListener('message', function(event) {
      if (event.origin !== 'expected-origin') return; // Validate the origin
      const { type, data } = event.data;

      if (type === 'INIT') {
        console.log('Message from parent:', data);

        // Send a response back to the parent Vue component
        event.source.postMessage({ type: 'RESPONSE', data: 'Hello from embedded page' }, event.origin);
      }
    });
  </script>
</body>
</html>

Summary

  • Use an iframe to embed the HTML page in the Vue component.
  • Use postMessage API for communication between the parent Vue component and the embedded HTML page.
  • Ensure to validate the origin of messages for security.

标签:内嵌,vue,embedded,component,Vue,event,HTML,page,页面
From: https://www.cnblogs.com/feel-myself/p/18371443

相关文章

  • 基于nodejs+vue协同过滤算法的音乐推荐系统 [程序+论文+开题]-计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容研究背景随着互联网技术的飞速发展,数字音乐已成为人们日常生活中不可或缺的一部分。面对海量的音乐资源,用户往往难以快速找到符合个人喜好的音乐作品。传统的音乐搜......
  • 基于nodejs+vue农村医保信息系统[程序+论文+开题]-计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容研究背景随着我国农村经济的快速发展和人民生活水平的提高,农村医疗保障体系的建设日益受到重视。然而,传统的农村医保管理方式存在信息孤岛、流程繁琐、效率低下等问......
  • 基于nodejs+vue农村商业银行贷款交易处理系统[程序+论文+开题]-计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容研究背景随着农村经济的蓬勃发展,农村商业银行在支持农业、农村和农民发展方面扮演着至关重要的角色。然而,传统的贷款交易处理流程往往存在效率低下、信息不对称、风......
  • 基于nodejs+vue面向爱宠人群的宠物资讯系统[程序+论文+开题]-计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容研究背景随着社会经济的快速发展与居民生活水平的提升,宠物已成为越来越多家庭的重要成员,爱宠人群规模日益庞大。这一群体对于宠物养护、健康管理、行为训练及生活娱......
  • Vue基本使用
    一、什么是Vue通过我们学习的html+css+js已经能够开发美观的页面了,但是开发的效率还有待提高,那么如何提高呢?我们先来分析下页面的组成。一个完整的html页面包括了视图和数据,数据是通过请求从后台获取的,那么意味着我们需要将后台获取到的数据呈现到页面上,很明显,这就需要我们......
  • 2.可视化web页面
    1.1.基本元素与布局_文本与标题1.2.基本元素与布局_图片与媒体1.3.基本元素与布局_表格2.1.交互组件_按钮与触发事件2.2.交互组件_输入框与表单2.3.交互组件_下拉框与选择器3.1.数据可视化_绘图与图表3.2.数据可视化_Matplotlib、Plotly等集成4.使用Markdown增强......
  • 在Vue中的三种不同的模块导出方式:分别暴露、统一暴露和默认暴露。
     一,分别暴露:通过在模块中使用export关键字来分别导出多个变量、函数或组件。例如:test.jsexportconstperson={name:"bruce",age:33}exportfunctiongetPerson(){console.log(11)}在另一个模块中,可以使用解构赋值来导入这些分别暴露的变量、函数或组件:import......
  • ssm城投公司企业人事管理系统设计与实现+vue
    文章目录目录文章目录论文目录项目介绍开发环境系统实现论文参考论文目录摘 要Abstract第1章 绪论1.1 课题背景1.2课题意义1.3研究内容第2章 开发环境与技术2.1Java语言2.2 MYSQL数据库2.3IDEA开发工具2.4SSM框架第3章 系统分析......
  • 我们是如何测试数百个页面的
    自动化测试是确保软件质量和提供良好用户体验的有效方式。在Woovi,我们拥有数千个页面,用户与我们的第一次接触通常会通过这些展示我们产品的页面。因此,我们需要确保每个页面都能正常运行。每一个访问我们页面的用户都代表着一个新的潜在客户。测试页面的挑战Woovi的页面仅展示......
  • Nuxt3 使用animate.css来实现页面切换过渡效果
    首先,如果两个page分别在不同的layout下,是无法使用pageTransition来实现切换效果的,这时候需要使用layoutTransition来实现切换效果这里采用npmpackage的方式安装animate.css,当然采用cdn的形式也是可以的npmianimate.css然后在app.vue中导入<scriptsetup>import"anima......