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 相关文章推荐
检测是否已安装 .NET Framework 3.5的js脚本
Feb 14 Javascript
一个网马的tips实现分析
Nov 28 Javascript
推荐6款基于jQuery实现图片效果插件
Dec 07 Javascript
jQuery+PHP打造滑动开关效果
Dec 16 Javascript
全面了解addEventListener和on的区别
Jul 14 Javascript
微信小程序  checkbox组件详解及简单实例
Jan 10 Javascript
js实现密码强度检验
Jan 15 Javascript
详解微信小程序 wx.uploadFile 的编码坑
Jan 23 Javascript
微信小程序实现红包功能(后端PHP实现逻辑)
Jul 11 Javascript
webpack自动打包和热更新的实现方法
Jun 24 Javascript
基于postman获取动态数据过程详解
Sep 08 Javascript
微信小程序tab左右滑动切换功能的实现代码
Feb 08 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
完善CodeIgniter在IDE中代码提示功能的方法
2014/07/19 PHP
编写PHP脚本来实现WordPress中评论分页的功能
2015/12/10 PHP
详解PHP的Yii框架中的Controller控制器
2016/03/29 PHP
php利用header函数下载各种文件
2016/08/24 PHP
Yii2中添加全局函数的方法分析
2017/05/04 PHP
源码分析 Laravel 重复执行同一个队列任务的原因
2017/12/25 PHP
Yii框架页面渲染操作实例详解
2019/07/19 PHP
laravel 实现划分admin和home 模块分组
2019/10/15 PHP
一个用js实现的页内搜索代码
2007/05/23 Javascript
Javascript 学习笔记 错误处理
2009/07/30 Javascript
28个JS验证函数收集
2010/03/02 Javascript
javascript encodeURI和encodeURIComponent的比较
2010/04/03 Javascript
当jQuery遭遇CoffeeScript的时候 使用分享
2011/09/17 Javascript
深入分析js中的constructor和prototype
2012/04/07 Javascript
Nodejs使用mysql模块之获得更新和删除影响的行数的方法
2014/03/18 NodeJs
JavaScript中匿名、命名函数的性能测试
2014/09/04 Javascript
js实现从中间开始往上下展开网页窗口的方法
2015/03/02 Javascript
js中获取键盘按下键值event.keyCode、event.charCode和event.which的兼容性详解
2017/03/15 Javascript
jQuery Easyui Treegrid实现显示checkbox功能
2017/08/08 jQuery
Js利用prototype自定义数组方法示例
2017/10/20 Javascript
angular 实现的输入框数字千分位及保留几位小数点功能示例
2018/06/19 Javascript
Vue2.0中三种常用传值方式(父传子、子传父、非父子组件传值)
2018/08/16 Javascript
一看就会的vuex实现登录验证(附案例)
2020/01/09 Javascript
Vue获取页面元素的相对位置的方法示例
2020/02/05 Javascript
JS实现手写 forEach算法示例
2020/04/29 Javascript
基于JavaScript实现简单扫雷游戏
2021/01/02 Javascript
Python入门篇之对象类型
2014/10/17 Python
深入理解Python中变量赋值的问题
2017/01/12 Python
Python实现查看系统启动项功能示例
2018/05/10 Python
python中的decorator的作用详解
2018/07/26 Python
Python 单例设计模式用法实例分析
2019/09/23 Python
CK加拿大官网:Calvin Klein加拿大
2020/03/14 全球购物
您熟悉ORM(Object-Relation Mapping)吗?请谈谈您所理解的ORM
2016/02/08 面试题
创先争优公开承诺书
2014/08/30 职场文书
如何写辞职书
2015/02/26 职场文书
vue引入Excel表格插件的方法
2021/04/28 Vue.js