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 相关文章推荐
利用google提供的API(JavaScript接口)获取网站访问者IP地理位置的代码详解
Jul 24 Javascript
jquery 图片轮换效果
Jul 29 Javascript
移动端JQ插件hammer使用详解
Jul 03 Javascript
JavaScript 链式结构序列化详解
Sep 30 Javascript
微信小程序商城项目之侧栏分类效果(1)
Apr 17 Javascript
JavaScript寄生组合式继承实例详解
Jan 06 Javascript
webpack4之SplitChunksPlugin使用指南
Jun 12 Javascript
postman自定义函数实现 时间函数的思路详解
Apr 17 Javascript
详解vue项目中实现图片裁剪功能
Jun 07 Javascript
vuex存储复杂参数(如对象数组等)刷新数据丢失的解决方法
Nov 05 Javascript
js布局实现单选按钮控件
Jan 17 Javascript
使用 Vue-TCB 快速在 Vue 应用中接入云开发的方法
Feb 10 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 define()函数及defined()函数使用详解
2013/06/09 PHP
PHP+FFMPEG实现将视频自动转码成H264标准Mp4文件
2014/09/24 PHP
PHP实现广度优先搜索算法(BFS,Broad First Search)详解
2017/09/16 PHP
使用Rancher在K8S上部署高性能PHP应用程序的教程
2020/07/10 PHP
在线游戏大家来找茬II
2006/09/30 Javascript
JavaScript Undefined,Null类型和NaN值区别
2008/10/22 Javascript
调用js时ie6和ie7,ff的区别
2009/08/19 Javascript
JavaScript DOM 学习第五章 表单简介
2010/02/19 Javascript
jQuery动画效果animate和scrollTop结合使用实例
2014/04/02 Javascript
JS函数arguments数组获得实际传参数个数的实现方法
2016/05/28 Javascript
js实现网页定位导航功能
2017/03/07 Javascript
javascript实现最长公共子序列实例代码
2018/02/05 Javascript
node 文件上传接口的转发的实现
2019/09/23 Javascript
React Native 混合开发多入口加载方式详解
2019/09/23 Javascript
vue-resource 拦截器interceptors使用详解
2021/01/18 Vue.js
[04:44]DOTA2 2017全国高校联赛视频回顾
2017/08/21 DOTA
Python抓取手机号归属地信息示例代码
2016/11/28 Python
python Socket之客户端和服务端握手详解
2017/09/18 Python
python实现TF-IDF算法解析
2018/01/02 Python
Python TestCase中的断言方法介绍
2019/05/02 Python
python3射线法判断点是否在多边形内
2019/06/28 Python
python队列原理及实现方法示例
2019/11/27 Python
python利用JMeter测试Tornado的多线程
2020/01/12 Python
使用Python制作新型冠状病毒实时疫情图
2020/01/28 Python
新版Pycharm中Matplotlib不会弹出独立的显示窗口的问题
2020/06/02 Python
用pandas划分数据集实现训练集和测试集
2020/07/20 Python
windows系统Tensorflow2.x简单安装记录(图文)
2021/01/18 Python
法国创作个性化T恤衫和其他定制产品平台:Tostadora
2018/04/08 全球购物
Skyscanner台湾:全球知名的旅行比价引擎
2018/07/01 全球购物
港湾网络笔试题
2014/04/19 面试题
升职自荐信
2013/11/28 职场文书
行政总监岗位职责
2013/12/05 职场文书
2015年小学生自我评价范文
2015/03/03 职场文书
公司员工体检通知
2015/04/21 职场文书
小学德育工作总结2015
2015/05/12 职场文书
研究生学习计划书应该怎么写?
2019/09/10 职场文书