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 学习 几种常用方法
Jun 11 Javascript
JQuery实现倒计时按钮具体方法
Nov 14 Javascript
javascript中动态加载js文件多种解决办法总结
Nov 15 Javascript
jQuery实现页面内锚点平滑跳转特效的方法总结
May 11 Javascript
详解Document.Cookie
Dec 25 Javascript
JavaScript数据结构链表知识详解
Nov 21 Javascript
基于react框架使用的一些细节要点的思考
May 31 Javascript
jQuery实现的鼠标响应缓冲动画效果示例
Feb 13 jQuery
Node.js中DNS模块学习总结
Feb 28 Javascript
详解Vue.js v-for不支持IE9的解决方法
Dec 29 Javascript
vue实现图片上传预览功能
Dec 23 Javascript
解决vue-loader加载不上的问题
Oct 21 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
用phpmyadmin更改mysql5.0登录密码
2008/03/25 PHP
10个超级有用的PHP代码片段果断收藏
2015/09/23 PHP
php die()与exit()的区别实例详解
2016/12/03 PHP
Yii2框架数据验证操作实例详解
2018/05/02 PHP
thinkphp5 框架结合plupload实现图片批量上传功能示例
2020/04/04 PHP
用Javascript同时提交多个Web表单的方法
2009/12/26 Javascript
基于jquery.Jcrop的头像编辑器
2010/03/01 Javascript
js拖拽的原型声明和用法总结
2016/04/04 Javascript
javascript 将共享属性迁移到原型中去的实现方法
2016/08/31 Javascript
js实现导航栏中英文切换效果
2017/01/16 Javascript
Easyui ueditor 整合解决不能编辑的问题(推荐)
2017/06/25 Javascript
jquery在vue脚手架中的使用方式示例
2017/08/29 jQuery
AngularJs 最新验证手机号码的实例,成功测试通过
2017/11/26 Javascript
JavaScript实现仿Clock ISO时钟
2018/06/29 Javascript
使用async await 封装 axios的方法
2018/07/09 Javascript
详解小程序云开发数据库
2019/05/20 Javascript
vue-router源码之history类的浅析
2019/05/21 Javascript
Vue实现表格批量审核功能实例代码
2019/05/28 Javascript
Element-ui 自带的两种远程搜索(模糊查询)用法讲解
2021/01/29 Javascript
Python编写百度贴吧的简单爬虫
2015/04/02 Python
详解Python3.1版本带来的核心变化
2015/04/07 Python
13个最常用的Python深度学习库介绍
2017/10/28 Python
浅谈tensorflow1.0 池化层(pooling)和全连接层(dense)
2018/04/27 Python
python使用turtle库绘制时钟
2020/03/25 Python
关于python列表增加元素的三种操作方法
2018/08/22 Python
OpenCV-Python 摄像头实时检测人脸代码实例
2019/04/30 Python
python配置文件写入过程详解
2019/10/19 Python
Python守护进程实现过程详解
2020/02/10 Python
keras的三种模型实现与区别说明
2020/07/03 Python
新加坡网上化妆品店:Best Buy World
2018/05/18 全球购物
法国亚马逊官方网站:Amazon.fr
2020/12/19 全球购物
说出一些常用的类,包,接口
2014/09/22 面试题
校庆活动方案
2014/03/31 职场文书
大学生精神文明先进个人事迹材料
2014/05/02 职场文书
告诉你创业计划书的8个实用技巧
2019/07/12 职场文书
Android开发手册自定义Switch开关按钮控件
2022/06/10 Java/Android