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 相关文章推荐
文本框input聚焦失焦样式实现代码
Oct 12 Javascript
JavaScript中圆括号()和方括号[]的特殊用法疑问解答
Aug 06 Javascript
javascript控制在光标位置插入文字适合表情的插入
Jun 09 Javascript
浅析AngularJS Filter用法
Dec 28 Javascript
深入研究jQuery图片懒加载 lazyload.js使用方法
Aug 16 jQuery
js通过Date对象实现倒计时动画效果
Oct 27 Javascript
Mac下安装vue
Apr 11 Javascript
ES6 中可以提升幸福度的小功能
Aug 06 Javascript
Angular4.x Event (DOM事件和自定义事件详解)
Oct 09 Javascript
JavaScript实现动态添加、移除元素或属性的方法分析
Jan 03 Javascript
vue中多个倒计时实现代码实例
Mar 27 Javascript
在vue中使用防抖和节流,防止重复点击或重复上拉加载实例
Nov 13 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
Terran兵种介绍
2020/03/14 星际争霸
html静态页面调用php文件的方法
2014/11/13 PHP
php实现根据IP地址获取其所在省市的方法
2015/04/30 PHP
php多线程并发实现方法
2016/09/30 PHP
JQuery 确定css方框模型(盒模型Box Model)
2010/01/22 Javascript
javascript document.compatMode兼容性
2010/02/23 Javascript
根据IP的地址,区分不同的地区,查看不同的网站页面的js代码
2013/02/26 Javascript
Javascript核心读书有感之语言核心
2015/02/01 Javascript
jQuery中extend函数详解
2015/07/13 Javascript
Bootstrap导航条的使用和理解3
2016/12/14 Javascript
原生JS实现在线问卷调查投票特效
2017/01/03 Javascript
手把手教你如何使用nodejs编写cli命令行
2018/11/05 NodeJs
详解用场景去理解函数柯里化(入门篇)
2019/04/11 Javascript
如何阻止小程序遮罩层下方图层滚动
2019/09/05 Javascript
微信小程序左滑删除实现代码实例
2019/09/16 Javascript
echarts实现折线图的拖拽效果
2019/12/19 Javascript
python判断windows系统是32位还是64位的方法
2015/05/11 Python
Python实现监控程序执行时间并将其写入日志的方法
2015/06/30 Python
python初学之用户登录的实现过程(实例讲解)
2017/12/23 Python
Python使用numpy实现BP神经网络
2018/03/10 Python
Python OpenCV处理图像之滤镜和图像运算
2018/07/10 Python
python 解压pkl文件的方法
2018/10/25 Python
解决python opencv无法显示图片的问题
2018/10/28 Python
详解pandas绘制矩阵散点图(scatter_matrix)的方法
2020/04/23 Python
python缩进长度是否统一
2020/08/02 Python
Python数据库封装实现代码示例解析
2020/09/05 Python
Java Unsafe类实现原理及测试代码
2020/09/15 Python
thinkphp5 路由分发原理
2021/03/18 PHP
在HTML5 canvas里用卷积核进行图像处理的方法
2018/05/02 HTML / CSS
运动会800米加油稿
2014/02/22 职场文书
《东方明珠》教学反思
2014/04/20 职场文书
营销部内勤岗位职责
2014/04/30 职场文书
文明班集体申报材料
2014/05/23 职场文书
世界读书日的活动方案
2014/08/20 职场文书
群众路线教育实践活动学习笔记
2014/11/05 职场文书
Springboot-cli 开发脚手架,权限认证,附demo演示
2022/04/28 Java/Android