今天在使用parent.fn()调用父页面方法时发现并没有成功调用到父级iframe中的方法,后来发现是两个iframe并不在同一域名下,在网上查过后,发现H5中message方法恰好支持,闲话不多说了,上代码

父界面

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title></title><script type="text/javascript" src="js/jquery-1.11.3.min.js"></script><script type="text/javascript" src="js/cdIframe.js" ></script></head><body><!--注意该页面在打开时不能使用http://192.168.1.222--><iframe src="http://192.168.1.222:8020/mywork1/new_file.html" width="" height="" id="iframe"></iframe></body><script type="text/javascript">/** receiveMessage (type, callback)* type 子页面传值时进行匹配的字段名称* callback(data, node)* node 子页面所传的值* * */receiveMessage("istype", function (data, node) {console.log(node)//子页面中所填写类型为"istype"的数据})</script></html>

子页面

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><script type="text/javascript" src="js/jquery-1.11.3.min.js" ></script><script type="text/javascript" src="js/cdIframe.js" ></script><title></title></head><body><button id="btn">按钮</button><script>/** postMessage(type, data, direction)* param: type content direction* istype 父页面接收时进行匹配的字段名称* top    标记该数据向父级页面传输* * */postMessage("istype", "这是一个句话", "top")</script></body>
</html>

以下就是js代码:

/** cdIframe.js* iframe中跨域通信* 2018-8-9* Y J* * */
//父窗体中监听消息
function receiveMessage (type, callback) {window.addEventListener('message', function(e) {if(e.data.type == type){callback(e.data, e)};});
};
//子窗体中监听消息
function postMessage(type, data, direction) {var post = {type: type,data: data};if(direction == "top"){window.parent.postMessage(post, '*');}else{window.frames[0].postMessage(post,'*');   //若是向子页面传值则使用该句};
};

以上就是所有的代码了,如果哪里写的不对还请多多指正。

下载地址:https://gitee.com/yangjunhouse/dome/tree/master/dome-cdIframe

iframe父子级页面传值支持跨域访问javascript相关推荐

  1. html的页面怎样直接跨域访问,【HTML】iframe跨域访问问题

    概述 本地同一浏览器访问本地HTML文件和访问服务器端HTML文件,本地Iframe没有自适应高度,而服务器端的Ifrane自适应了高度. 1.问题重现: Chrome 版本 41.0.2272.10 ...

  2. 如何判定API接口是否支持跨域访问

    1.背景 同一个h5页面需要访问多个不同的域名下的地址 2.判定方式 方式一 在浏览器控制台执行如下代码: var xhr = new XMLHttpRequest(); xhr.open('GET' ...

  3. Nginx配置服务器静态文件支持跨域访问

    2019独角兽企业重金招聘Python工程师标准>>> 在server中配置 add_header Access-Control-Allow-Origin *;add_header ...

  4. 百度网盘播放地址html,百度云web播放器cyberplayer的flv播放地址一定要支持跨域访问如何设置...

    cyberplayer, 官方demo 百度云web播放器: Cyberplayer3.0 Demo http://cyberplayer.bcelive.com/demo/new/index.htm ...

  5. tomcat项目支持跨域访问

    在web.xml中添加如下filter <filter><filter-name>CorsFilter</filter-name><filter-class& ...

  6. iframe 跨越访问_js iframe跨域访问

    1.什么是跨域? 2.前台解决跨域几种方法 2.1 动态创建script 2.2 使用document.domain 2.3使用HTML5新属性postMessage 2.4 利用iframe和loc ...

  7. js图片下载(支持跨域/解决Access-Control-Allow-Origin)

    一.思路 使用canvas绘制图片 使用toBlob方法将canvas图片转换为文件 使用a标签的download属性下载这个canvas转化生成的图片文件 canvas.toBlob() 将canv ...

  8. AJAX跨域访问解决方案

    Case I. Web代理的方式 (on Server A) 即用户访问A网站时所产生的对B网站的跨域访问请求均提交到A网站的指定页面,由该页面代替用户页面完成交互,从而返回合适的结果.此方案可以解决 ...

  9. 第一百一十期:详解SpringBoot应用跨域访问解决方案

    说到跨域访问,必须先解释一个名词:同源策略.所谓同源策略就是在浏览器端出于安全考量,向服务端发起请求必须满足:协议相同.Host(ip)相同.端口相同的条件,否则访问将被禁止,该访问也就被称为跨域访问 ...

最新文章

  1. 获取枚举值上的Description特性说明
  2. python中使用socket编程实现图片或者其他文件的传输
  3. python培训就业班口碑排行榜-Python就业班培训多少钱?老男孩Python收费标准
  4. C++11 auto和decltype关键字
  5. map怎么转化dto_阿里面试题:为什么Map桶中个数超过8才转为红黑树
  6. html三列布局源码,HTML三列布局 - 黄柳淞的个人页面 - OSCHINA - 中文开源技术交流社区...
  7. 2×3卡方检验prism_卡方独立性检验原理
  8. 详述一次大量删除导致MySQL慢查的分析
  9. dhcp网络服务的搭建和配置
  10. 微软面试题之两个链表的第一个公共结点
  11. 钉钉扫码登录第三方_e签宝联合钉钉升级产品功能,共建企业服务生态闭环
  12. JAVA阻塞队列LinkedBlockingQueue 以及非阻塞队列ConcurrentLinkedQueue 的区别
  13. 数字 显示为LED 字体
  14. 微信小程序自定义弹窗,禁止page页面滚动。
  15. ACE编辑器ace-editor笔记
  16. 语音芯片选型基础,如何计算声音文件的大小?
  17. 贪心算法背包问题java
  18. Linux无法联网解决方案
  19. latex 的“对号”的几种表示
  20. 【软考】--软考总结

热门文章

  1. 国盾量子等参与中国量子通信行业首批标准编制 量子通信商用再加速
  2. 小哥送一单外卖应该拿多少钱?
  3. js小数运算出现多为小数问题_js 数字加减乘除精度问题,解决小数点后多位小数...
  4. centos 安装低版本内核_Docker安装教程
  5. 利用JMeter进行Web测试(简介适合初学者)
  6. Android开发:1-3、Android常用布局
  7. (软件工程复习核心重点)第十章面向对象设计-第四节:设计人机交互子系统和设计任务管理子系统
  8. (数据库系统概论|王珊)第六章关系数据理论-第一节:为什么要研究关系数据理论
  9. 不定长内存池之apr_pool
  10. USACO Section 1.2 Greedy Gift Givers (简单查找)