首页 > 其他分享 >vue页面嵌套iframe页面传值、调用、首次传值获取不到、有缓存数据问题

vue页面嵌套iframe页面传值、调用、首次传值获取不到、有缓存数据问题

时间:2022-09-23 18:11:07浏览次数:48  
标签:vue contentWindow infodata user iframe 传值 页面

在父组件中创建iframe

 


  <!-- iframe -->
      <!--  -->
    <el-dialog :visible.sync="dialogVisible" width="500px" @close="closeDialog" v-if="dialogVisible">
      <iframe id="iframe" ref="iframe" src="/static/test.html" width="100%" height="260px"></iframe>
    </el-dialog>

通过v-if的创建销毁dom,可以解决iframe页面缓存问题

 

父传子传值

 

// 发起会话
    openif(infodata) {
      this.dialogVisible = true;
      var that = this;
      this.$nextTick(() => {
//获取iframe元素 const iframe = document.getElementById("iframe"); iframe.onload = function (e) { //通过.contentWindow.postMessage(data,"*")向iframe子组件传值 iframe.contentWindow.postMessage({ // 暂时先写死 'stationId': '69999', // 写死 'loginId': '17999', // 坐席工号 // 'dest': infodata.user_mobile, // 手机号+0 'dest': "13455955635", // 手机号+0 'username': infodata.ter_user_name ? infodata.ter_user_name : ""// 客户姓名 }, "*"); } }); },
iframe.onload用来解决父传子首次传值获取不到数据的问题
子组件接收传值
window.addEventListener("message", message => {
        console.log(message ); 
})

  vue父页面调用ifarme子页面方法



 // 监听用户关闭对话框,执行签出操作
    closeDialog() {
      const iframe = document.getElementById("iframe");
      iframe.contentWindow.jtapi_Loginout("17999", "69999");
    },

  



 

标签:vue,contentWindow,infodata,user,iframe,传值,页面
From: https://www.cnblogs.com/426jie/p/16720353.html

相关文章

  • 计算机系统结构大题精讲4-页面替换算法-Cache 组相连映像
    1、在一个采用LRU算法和组相连映像的Cache系统中,主存由0-15共16块组成;Cache分为2组,每组两块,每块大小为16个存储字。在某个程序执行时,访存的主存块地址流为:6、2、4、1、4、6......
  • vue组件命名错误
    Componentname“Home“shouldalwaysbemulti-worde/multi-word-component-names报错的原因:在组件命名的时候未按照ESLint的官方代码规范进行命名,根据ESLint官......
  • vue3路由简单配置
    路由目录各文件内容【router/index】import{createRouter,createWebHashHistory,createWebHistory}from"vue-router";import{scrollBehavior}from"./helpe......
  • 【Vue】vue项目搭建、ES6的简单使用(大觅)
    目录项目搭建与基本配置项目搭建安装淘宝NPM镜像cnpm安装webpack新建项目运行项目运行时出现的一些问题和解决方案框架安装安装UI框架iView引入UI框架iView引入方式1:全部......
  • 如何实现webview内页面放大和缩小 (手指放大缩小)
    uniapp的web-view无法自由缩放(已解决)onReady(){ //#ifdefAPP-PLUS constcurrentWebview=this.$scope.$getAppWebview()//获取当前页面的webview对象 setTimeou......
  • 【Vue】vue基础学习笔记
    目录基础差值语法模板语法数据绑定el与data的两种写法el与data写法1el写法2:挂载data写法2:函数式写法绑定样式绑定class样式绑定style样式条件渲染基础差值语法<divid......
  • 【vue3】reactive不能直接赋值的解决方法
    在vue3里,ref和reacitve都可以定义响应式数据,但是两者有所不同。在使用reactive定义复杂结构的响应式数据时,如果你要对其赋值,会丢失其响应性。然后赋值是我们经常进行的操作......
  • Vue中使用benz-amr-recorder插件实现播放amr音频文件以及在线url跨域问题解决
    场景需要做一个Android端和Web端的聊天室,Android端的录音音频文件为.amr格式,除了通过后台server端转码之后,是否可以通过插件在前端直接播放amr的音频文件。benz-amr-rec......
  • vue3配置全局过滤器
    vue3配置全局过滤器需要在main.js中配置一下代码//vue3配置全局过滤器app.config.globalProperties.$filters={//formatTime过滤器的名称formatTime(value:s......
  • Vuex新一代状态管理 — Pinia
    最近在学习pinia,做了一些笔记,在这里分享一下:https://note.youdao.com/ynoteshare/index.html?id=3bedfc4d66825be097cee904fe311f56&type=note&_time=1663899586848......