Vue 使用iframe引用html页面实现vue和html页面方法的调用操作


Posted in Javascript onNovember 16, 2020

当我们需要在vue中使用其他模块或者其他地方的一些html页面功能时,我们可以使用iframe去引用html页面,实现他们的交互

首先我们可以再vue页面中使用标签引用html页面

<template>
 <div>
  <iframe
   name="iframeMap"
   id="iframeMapViewComponent"
   width="100%"
   height="470px"
   v-bind:src="smgHtmlPath"
   frameborder="0"
   scrolling="no"
   ref="iframeDom"
  ></iframe>
 </div>
</template>

其中src就是我们html的地址,我们可以在data中定义smgHtmlPath属性,在我们的created方法中初始化,为该属性赋予初始值

如果页面加载出来了,我们就可以开始vue页面和html页面的交互了

如果我们需要vue页面调用html页面方法,我们可以使用如下代码

mounted() {
  this.iframeWin = this.$refs.iframeDom.contentWindow;
 },

首先在我们的mounted方法中得到iframe对象

在vue页面使用postMessage的API向html页面发送请求数据,因为我们的vue和html页面可能不在同一域名,所以会产生跨域的问题,这里我们使用的postMessage可以实现跨域,我这里在google和IE11测试都是可以跨域的

loadSmgxmlModels(data) {
    this.iframeWin.postMessage(data,"*")
}

这里的data就是我们要传递给html页面的数据

“*”,这里代表的是所有地址可以接收到,我们也可以指定地址,例如:www.baidu.com

在html页面的标签中编写监听方法,用来监听我们的请求,获取数据

window.addEventListener('message', function(ev) {
  // 当我们是父子窗口进行消息传递时,可以使用此判断,只接受父窗口传递来的消息,
  if (ev.source !== window.parent) return;
  var data = ev.data;
 console.log("vue传递的数据为:"+data);
  //下面可以调用我们html页面js中的方法,使用传递的数据进行操作了
}, false);

这里我们监听的就是message,可以获取数据。

补充知识:Vue界面使用iframe嵌套html界面的传值问题

一.从父页面给子页面传值

可以通过url进行传值,若嵌入外网例如www.baidu.com,可以设置为

<iframe name = "child" id = "child" :src="www.baidu.com#asd=1" width="1920" height="880" frameborder="0" scrolling="no" style="position:related;top: 2.8px;left: 0px;"></iframe>

asd后面跟的值可以根据需要更改,不影响地址的访问

若为本地html文件,类似的可以写作

:src="test.html#asd =1"

但是如何在子页面读取asd的值这个还没探究成功,稍后若寻找到合适的方法会再更新。这种方法比较适合比较简单的需求

二.父页面获取子页面的值

例如我们在子页面设置四个click事件,JS代码如下

<script>
    var n = 0;
    function FN()
    {
      n = 1;
      alert('hello1'+n);
    }
    function EN()
    {
      n = 2;
      alert('hello1'+n);
    }
    function ER()
    {
      n = 3;
      alert('hello1'+n);
    }
    function GN()
    {
      n = 4;
      alert('hello1'+n);
    }
</script>

那么在父页面我们可以在method中定义如下函数获取到n的值

callchild(){
   let obj1=window.frames["child"];//获得对应iframe的window对象
   alert(obj1.n);
  },

将callchild函数由某个button触发,可以看到弹出窗口

Vue 使用iframe引用html页面实现vue和html页面方法的调用操作

以上这篇Vue 使用iframe引用html页面实现vue和html页面方法的调用操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Javascript 陷阱 window全局对象
Nov 26 Javascript
Javascript页面添加到收藏夹的简单方法
Aug 07 Javascript
javascript对象的使用和属性操作示例详解
Mar 02 Javascript
Java遍历集合方法分析(实现原理、算法性能、适用场合)
Apr 25 Javascript
浅析Javascript ES6新增值比较函数Object.is
Aug 24 Javascript
JavaScript prototype属性详解
Oct 25 Javascript
JavaScript下拉菜单功能实例代码
Mar 01 Javascript
javascript html5轻松实现拖动功能
Mar 01 Javascript
javascript闭包功能与用法实例分析
Apr 06 Javascript
详解Vue 非父子组件通信方法(非Vuex)
May 24 Javascript
详解jQuery同步Ajax带来的UI线程阻塞问题及解决办法
Aug 09 jQuery
js实现手机web图片左右滑动效果
Dec 29 Javascript
Vue指令实现OutClick的示例
Nov 16 #Javascript
浅谈vue在html中出现{{}}的原因及解决方式
Nov 16 #Javascript
vue组件中传值EventBus的使用及注意事项说明
Nov 16 #Javascript
小程序自定义弹框效果
Nov 16 #Javascript
vuex中遇到的坑,vuex数据改变,组件中页面不渲染操作
Nov 16 #Javascript
基于Vue+Webpack拆分路由文件实现管理
Nov 16 #Javascript
小程序实现上下切换位置
Nov 16 #Javascript
You might like
解析link_mysql的php版
2013/06/30 PHP
深入解析Laravel5.5中的包自动发现Package Auto Discovery
2017/09/13 PHP
小程序微信支付功能配置方法示例详解【基于thinkPHP】
2019/05/05 PHP
php+laravel依赖注入知识点总结
2019/11/04 PHP
在Z-Blog中运行代码[html][/html](纯JS版)
2007/03/25 Javascript
将CKfinder整合进CKEditor3.0的新方法
2010/01/10 Javascript
javascript function调用时的参数检测常用办法
2010/02/26 Javascript
JQuery each打印JS对象的方法
2013/11/13 Javascript
页面加载完毕后滚动条自动滚动一定位置
2014/02/20 Javascript
判断iframe里的页面是否加载完成
2014/06/06 Javascript
Node.js中使用事件发射器模式实现事件绑定详解
2014/08/15 Javascript
js实现的Easy Tabs选项卡用法实例
2015/09/06 Javascript
JS导出PDF插件的方法(支持中文、图片使用路径)
2016/07/12 Javascript
浅谈vue项目可以从哪些方面进行优化
2018/05/05 Javascript
详解Vue CLI3配置之filenameHashing使用和源码设计使用和源码设计
2018/08/31 Javascript
富文本编辑器vue2-editor实现全屏功能
2019/05/26 Javascript
了解javascript中变量及函数的提升
2019/05/27 Javascript
用Vue.js方法创建模板并使用多个模板合成
2019/06/28 Javascript
Nodejs中使用puppeteer控制浏览器中视频播放功能
2019/08/26 NodeJs
JavaScript实现文件下载并重命名代码实例
2019/12/12 Javascript
Vue简单封装axios之解决post请求后端接收不到参数问题
2020/02/16 Javascript
用JavaScript实现贪吃蛇游戏
2020/10/23 Javascript
[14:36]2014 DOTA2国际邀请赛中国区预选赛5.21 Orenda VS NE
2014/05/22 DOTA
详细讲解用Python发送SMTP邮件的教程
2015/04/29 Python
python实现Virginia无密钥解密
2019/03/20 Python
Django框架下静态模板的继承操作示例
2019/11/08 Python
详解基于python的全局与局部序列比对的实现(DNA)
2020/10/07 Python
html5 canvas实现跟随鼠标旋转的箭头
2016/03/11 HTML / CSS
英国办公家具网站:Furniture At Work
2019/10/07 全球购物
智能室内花园:Click & Grow
2021/01/29 全球购物
环境科学专业大学生自荐信格式
2013/09/21 职场文书
ktv好的活动方案
2014/08/17 职场文书
关于运动会的广播稿(10篇)
2014/09/12 职场文书
英语通知范文
2015/04/22 职场文书
教你使用VS Code的MySQL扩展管理数据库的方法
2022/01/22 MySQL
CentOS7环境下MySQL8常用命令小结
2022/06/10 Servers