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 相关文章推荐
用jquery来定位
Feb 20 Javascript
基于jquery的固定表头和列头的代码
May 03 Javascript
动态加载script文件的两种方法
Aug 15 Javascript
JS实现为排序好的字符串找出重复行的方法
Mar 02 Javascript
javascript self对象使用详解
Oct 18 Javascript
原生js实现可拖动的登录框效果
Jan 21 Javascript
VUE预渲染及遇到的坑
Sep 03 Javascript
JS module的导出和导入的实现代码
Feb 25 Javascript
基于Vue+elementUI实现动态表单的校验功能(根据条件动态切换校验格式)
Apr 04 Javascript
Vue2.x通用条件搜索组件的封装及应用详解
May 28 Javascript
vue之延时刷新实例
Nov 14 Javascript
基于JavaScript实现简单的轮播图
Mar 03 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
用PHP实现维护文件代码
2007/06/14 PHP
Yii Framework框架获取分类下面的所有子类方法
2014/06/20 PHP
PHP后期静态绑定实例浅析
2018/12/21 PHP
非常好用的JsonToString 方法 简单实例
2013/07/18 Javascript
JS获取节点的兄弟,父级,子级元素的方法
2014/01/09 Javascript
JS中产生20位随机数以0-9为例也可以是a-z A-Z
2014/08/01 Javascript
jQuery获取页面及个元素高度、宽度的总结——超实用
2015/07/28 Javascript
详解Document.Cookie
2015/12/25 Javascript
Node.js项目中调用JavaScript的EJS模板库的方法
2016/03/11 Javascript
微信小程序 框架详解及实例应用
2016/09/26 Javascript
基于bootstrap-datetimepicker.js不支持IE8的快速解决方法
2016/11/07 Javascript
Bootstrap缩略图与警告框学习使用
2017/02/08 Javascript
vue2.x+webpack快速搭建前端项目框架详解
2017/11/30 Javascript
vue中添加与删除关键字搜索功能
2019/10/12 Javascript
ES6学习笔记之字符串、数组、对象、函数新增知识点实例分析
2020/01/22 Javascript
js删除对象中的某一个字段的方法实现
2021/01/11 Javascript
python opencv 图像尺寸变换方法
2018/04/02 Python
对Python subprocess.Popen子进程管道阻塞详解
2018/10/29 Python
python Matplotlib底图中鼠标滑过显示隐藏内容的实例代码
2019/07/31 Python
python中利用matplotlib读取灰度图的例子
2019/12/07 Python
详解python opencv、scikit-image和PIL图像处理库比较
2019/12/26 Python
python3.6连接mysql数据库及增删改查操作详解
2020/02/10 Python
python+opencv边缘提取与各函数参数解析
2020/03/09 Python
python利用os模块编写文件复制功能——copy()函数用法
2020/07/13 Python
基于Python实现简单学生管理系统
2020/07/24 Python
Funko官方商店:源自美国,畅销全球搪胶收藏玩偶
2018/09/15 全球购物
新浪网技术部笔试题
2016/08/26 面试题
包装类的功能、种类、常用方法
2012/01/27 面试题
拾金不昧表扬信范文
2014/01/11 职场文书
计算机个人求职信范例
2014/01/24 职场文书
2014年百日安全生产活动总结
2014/05/04 职场文书
民事诉讼授权委托书范文
2014/08/02 职场文书
伏羲庙导游词
2015/02/09 职场文书
社会心理学学习心得体会
2016/01/22 职场文书
教你做个可爱的css滑动导航条
2021/06/15 HTML / CSS
Redis 彻底禁用RDB持久化操作
2021/07/09 Redis