vue3、原生html交互传值

1、引入原生html

将该文件放到public目录下,在vue项目里面使用iframe 引入该文件,监听load事件(load事件在<iframe>的内容完全加载完成之后触发)

复制代码
  <iframe
      @load="onIframeLoad"
      style="width: 454px; height: 480px"
      src="../../../public/Sample/test.html"
      frameborder="0"
    ></iframe>
2、html文件操作完成后,通过postMessage向.vue文件传递信息
复制代码
//html文件的保存事件
function submitEvent()
{
	close();
    //id的值,根据自己需要获取
	window.parent.postMessage({ action: 'close', id: '01234564789'}, '*');
}
3、在vue文件里面,文件加载完成后,添加对'message'事件的监听,监听完成后,进行相应的操作
复制代码
const onIframeLoad = () => {
  window.addEventListener("message", handleMessage);
};

const handleMessage = (event) => {
  if (event.data.action == "close") {
    console.log(event.data.id)
  }
};
4、移除事件监听器
复制代码
onUnmounted(() => {
  // 组件销毁前移除事件监听器
  window.removeEventListener("message", handleMessage);
});
相关推荐
源码云商3 小时前
Spring Boot + Vue 实现在线视频教育平台
vue.js·spring boot·后端
谷雪_6586 小时前
鼠标交互初体验:点击屏幕生成彩色气泡(EGE 库基础)
c语言·开发语言·microsoft·交互
huohuopro7 小时前
Vue3快速入门/Vue3基础速通
前端·javascript·vue.js·前端框架
草巾冒小子7 小时前
vue3中解决 return‘ inside ‘finally‘ block报错的问题
前端·javascript·vue.js
zfyljx7 小时前
五子棋html
前端·css·html
仰望星空的凡人9 小时前
【JS逆向基础】前端基础-HTML与CSS
css·python·html·js逆向
Enti7c10 小时前
利用jQuery 实现多选标签下拉框,提升表单交互体验
前端·交互·jquery
shadowcz00712 小时前
手势交互界面的光标设计#
交互
pianmian112 小时前
坐标系与坐标系数转换
vue.js·html
緑水長流*z12 小时前
(14)Element Plus项目综合案例
vue.js·elementui·vue3·element plus·elementplus项目·完整项目案例·项目学习笔记