1、Vue组件中如何引入iframe?

<template><div class="act-form"><iframe :src="src"></iframe></div>
</template><script>export default {data () {return {src: '你的src'}}
}
</script>

如上,直接通过添加iframe标签,src属性绑定data中的src,第一步引入就完成了

2、vue如何获取iframe对象以及iframe内的window对象?

在vue中,dom操作比不上jquery的$('#id')来的方便,但是也有办法,就是通过ref

<template><div class="act-form"><iframe :src="src" ref="iframe"></iframe></div>
</template><script>export default {data () {return {src: '你的src'}},mounted () {// 这里就拿到了iframe的对象console.log(this.$refs.iframe)}
}
</script>

然后就是获取iframe的window对象,因为只有拿到这个对象才能向iframe中传东西

<template><div class="act-form"><iframe :src="src" ref="iframe"></iframe></div>
</template><script>export default {data () {return {src: '你的src'}},mounted () {// 这里就拿到了iframe的对象console.log(this.$refs.iframe)// 这里就拿到了iframe的window对象console.log(this.$refs.iframe.contentWindow)}
}
</script>

3、vue如何向iframe内传送信息?

通过postMessage,具体关于postMessage是什么,自己去google, 我的理解postMessage是有点类似于UDP协议,就像短信,是异步的,你发信息过去,但是没有返回值的,只能内部处理完成以后再通过postMessage向外部发送一个消息,外部监听message 为了让postMessage像TCP,为了体验像同步的和实现多通信互不干扰,特别制定的message结构如下

{cmd: '命令',params: {'键1': '值1','键2': '值2'}
}

通过cmd来区别这条message的目的

具体代码如下

<template><div class="act-form"><iframe :src="src" ref="iframe"></iframe><div @click="sendMessage">向iframe发送信息</div></div>
</template><script>export default {data () {return {src: '你的src',iframeWin: {}}},methods: {sendMessage () {// 外部vue向iframe内部传数据this.iframeWin.postMessage({cmd: 'getFormJson',params: {}}, '*')},},mounted () {// 在外部vue的window上添加postMessage的监听,并且绑定处理函数handleMessagewindow.addEventListener('message', this.handleMessage)this.iframeWin = this.$refs.iframe.contentWindow},handleMessage (event) {// 根据上面制定的结构来解析iframe内部发回来的数据const data = event.dataswitch (data.cmd) {case 'returnFormJson':// 业务逻辑breakcase 'returnHeight':// 业务逻辑break}}
}
</script>

4、iframe内如何向外部vue发送信息?

现在通过点击“向iframe发送信息”这个按钮,从外部vue中已经向iframe中发送了一条信息

{cmd: 'getFormJson',params: {}
}

那么iframe内部如何处理这个信息呢?

<!DOCTYPE html>
<html lang="en">
<head><meta charset="utf-8"><title>iframe Window</title><style>body {background-color: #D53C2F;color: white;}</style>
</head>
<body><h1>Hello there, i'm an iframe</h1><script>// 向父vue页面发送信息window.parent.postMessage({cmd: 'returnHeight',params: {success: true,data: document.body.scrollHeight + 'px'}}, '*');// 接受父页面发来的信息window.addEventListener("message", function(event){var data = event.data;switch (data.cmd) {case 'getFormJson':// 处理业务逻辑break;}});</script>
</body>
</html>

vue内嵌iframe跨域通信相关推荐

  1. iframe跨域通信的通用解决方案-第二弹!(终极解决方案)

    一年前,我发过一篇关于跨文档通信方案的文章<iframe跨域通信的通用解决方案>,提供了一种基于创建iframe与轮询window.name的方案. 一年后,很高兴地带来彻底改造的新版本. ...

  2. iframe跨域通信

    在非跨域的情况下,可以通过 [父调子] iframe的dom节点.contentWindow [子调父]window.top/window.parent 来相互通信 在跨域情况下,可以使用postMe ...

  3. H5 开发内嵌页面跨域问题

    问题 有一个内嵌外部网页的需求,而页面内嵌进来出现跨域,从而进行一系列尝试 解决思路 由于是H5开发,当时内嵌用的是iframe,想起移动端有一个webview,webview的权限比iframe的高 ...

  4. vue页面内嵌iframe使用postMessage进行跨域通信

    跨域 关于跨域的详细资料:跨域,这里只需要明确什么情况下跨域了(等同于两个url什么情况下是非同源关系). 协议.域名.端口三者有其一不同,就算是跨域,就算是非同源 本地环境模拟 借助phpstudy ...

  5. 利用iframe实现ajax 跨域通信的解决方案

    在漫长的前端开发旅途上,无可避免的会接触到ajax,而且一般情况下都是用在同一域下的ajax请求:但是如果请求是发生在不同的域下,请求就无法执行,并且会抛出异常提示不允许跨域请求,目前我没有找到明确的 ...

  6. vue 项目中分别使用 vue-pdf 插件和内嵌 iframe 实现 PDF 文件预览,缩放,旋转,下载,保存等功能 ?

    需求:在 vue  和 element-ui 项目中,有点击按钮预览,下载,打印 PDF 文件 需求,要求支持 PDF 的预览,上下页切换,首尾页切换,页码选择跳转,放大缩小,顺时针逆时针旋转,下载, ...

  7. 【JavaScript】父子页面之间跨域通信的方法

    由于同源策略的限制,JavaScript跨域的问题,一直是一个比较棘手的问题,为了解决页面之间的跨域通信,大家煞费苦心,研究了各种跨域方案.之前也有小网同学分享过一篇"跨域,不再纠结&quo ...

  8. iframe跨域自适应高度

    关于Javascript跨域问题的解决方案已在之前的一片文章中详细说明,详见:http://blog.csdn.net/sfdev/archive/2009/02/13/3887006.aspx: 除 ...

  9. 前端跨域通信的几种方式

    前言 前端通信类的问题,主要包括以下内容: 1.什么是同源策略及限制 同源策略是一个概念,就一句话.有什么限制,就三句话.能说出来即可. 2.前后端如何通信 如果你不准备,估计也就只能说出ajax. ...

最新文章

  1. C++建立动态二维数组
  2. AI攻破高数核心,1秒内精确求解微分方程、不定积分,性能远超Matlab
  3. 【Android 事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 二 )
  4. 物理Data Guard的日常维护
  5. OpenGL绘制带有索引的矩形的实例
  6. Oracle中对象权限与系统权限revoke
  7. stylus 迭代+插值实现css同类型不同值样式序列
  8. Ehcache 3.7文档—基础篇—XML Configuration
  9. Logstash5.X 日志搜集处理框架 安装配置
  10. 生产级mysql双写_生产级Mysql物理全量备份-Xtrabackup
  11. IDEA 个人私藏插件
  12. 嵌入式学习之QT学习---6 QT上位机开发之串口助手(下)
  13. 自己组装电脑配置清单2022 自己组装电脑需要哪些配件
  14. asp.net学习心得总结
  15. 创建Allegro差分对
  16. Python 输出对齐
  17. 命令解压aar、文件压缩成aar图文详解
  18. Element ui 组件中用键盘事件
  19. 如何利用python计算即期利率_PYTHON计算任务收益率
  20. 《Turbo iso: towards ultrafast and robust subgraph isomorphism search in large graph databases》读后笔记

热门文章

  1. 阿里年薪70w+级程序员,强烈推荐阅读
  2. html苹果里放大,一个有关字体在iPhone上变大了的问题_html/css_WEB-ITnose
  3. 关于浏览器主页被锁定的部分解决方案
  4. STC15-STC15W4K56S4-STC15F2K60S2串口通信程序代码-提供源码下载
  5. 小程序获取用户信息的两种方法
  6. MFC使用最优编译(Maximize Speed)引起的问题
  7. mysql8.0 wordpress_2008Server R2 部署IIS+MySql8.0+PHP7.4+WordPress5.4 - 兔子街
  8. 数独挑战(牛客网 2019年华南理工大学程序设计竞赛(春季赛))
  9. python:单例设计模式
  10. 联想新款 YOGA Pro 14s配置怎么样 值得买吗