这几天在项目中遇到,一个难点, 就是需要异步加载一个pdf插件, 同时又需要获取这个插件中的点击事件来生成用户的下载记录.

刚开始也是想了很多方法,网上搜的

格式1:$("#iframe的ID").contents().find("#iframe中的控件ID").click();

格式2:$("#iframe中的控件ID",document.frames("frame的name").document).click();

发现在跨域环境下并没有用, 看到有些人说这个无解, 需要走后台, 我当时也是凉凉感觉.

  后来自己也是想了办法,在插件页面中给按钮绑定事件,然后通过给插件带参数时在url中加上几个参数,一起提交.刚开始我也是做得风生水起

结果,后来发现,腰带的参数太多了,而插件又是以iframe引入, 很是麻烦..结果无意中找到了html5有一个页面通讯方法,  一实验果然有效...现在做个记录,以备不时之需

子页面iframe中的代码:

<script type="text/javascript">
$("#secondaryDownload").click(function(){
var fun="click";
window.parent.postMessage(fun,'*');
})
</script>

那个fun参数没有实际意义,我只是为了加个小教验,当然也可以传入自己想传的参数.  父页面代码:

 window.addEventListener('message',function(e){
console.log(e);
var fun=e.data;
if(fun=="click"){
alert("aaa");
};
}
},false);

这样, 在我们点击子页面的下载按钮时,会给父页面发一个消息,而父页面的事件监听器会接收到从而触发相应的事件.

当然,我也是刚了解这个postMessage()方法,里面的参数细节,请参考相关文档.

关于父窗口获取跨域iframe子窗口中的元素的更多相关文章

  1. js如何获取跨域iframe 里面content

    每天学习一点点 编程PDF电子书.视频教程免费下载:http://www.shitanlife.com/code 其中src可能存在跨域. 现有的获取方式   var test = document. ...

  2. 父窗口调用iframe子窗口方法

    一.父窗口调用iframe子窗口方法 1.HTML语法:<iframe name="myFrame" src="child.html"></i ...

  3. 使用postMesssage()实现跨域iframe页面间的信息传递----转载

    由于web同源策略的限制,当页面使用跨域iframe链接时,主页面与子页面是无法交互的,这对页面间的信息传递造成了不小的麻烦,经过一系列的尝试,最后我发现有以下方法可以实现: 1. 子页面url传参 ...

  4. 跨域iframe的高度自适应

    If you cannot hear the sound of the genuine in you, you will all of your life spend your days on the ...

  5. 跨域iframe高度计算

    一.同域获取iframe内容 这里有两个细节: 1. 取iframe内的文档对象,标准浏览器使用contentDocument属性,IE低版本(IE6,7,8)使用document属性. 2. cal ...

  6. 谷歌、火狐浏览器下实现JS跨域iframe高度自适应的完美解决方法,跨域调用JS不再是难题!

    谷歌.火狐浏览器下实现JS跨域iframe高度自适应的解决方法 导读:今天开发的时候遇到个iframe自适应高度的问题,相信大家对这个不陌生,但是一般我们都是在同一个项目使用iframe嵌套页面,这个 ...

  7. 完美实现跨域Iframe高度自适应【Iframe跨域高度自适应解决方案】

    Iframe的强大功能偶就不多说了,它不但被开发人员经常运用,而且黑客们也常常使用它,总之用过的人知道它的强大之处,但是Iframe有个致命的“BUG”就是iframe的高度无法自动适应,这一点让很多 ...

  8. javascript跨域通信(一):利用location.hash实现跨域iframe自适应

    页面域关系: a.html所属域A:www.A.comb.html所属域B:www.B.com 问题本质: js对跨域iframe访问问题,因为要控制a.html中iframe的高度和宽度就必须首先读 ...

  9. iframe子页面与父页面元素的访问以及js变量的访问

    1.子页面访问父页面元素  parent.document.getElementById('id')和document相关的方法都可以这样用 2.父页面访问子页面元素  document.getEle ...

随机推荐

  1. 台达PLC实现远程下载程序

    台达PLC实现远程下载程序 日期:2019-04-27                    时间    08:33:57 让物联变得更简单 18-09-2411:25 明明在公司调试没问题的设备一到 ...

  2. ILRuntime_NewbieGuide—进阶

    进阶篇其实要求你应该拥有一个云服务器才有意思,但你用本地电脑也是一样的道理,只是没有这么有趣了. 笔者大一的时候,腾讯云搞活动,学生认证可以抢到1元的云主机,配置很低,但是平时练练手还是可以的,现在没 ...

  3. Golang 介绍与安装

    1.介绍与安装 Golang 是什么 Go 亦称为 Golang(按照 Rob Pike 说法,语言叫做 Go,Golang 只是官方网站的网址),是由谷歌开发的一个开源的编译型的静态语言. Gola ...

  4. css解决内联元素间的空白间隔

    在内联元素的父级元素上设置font-size: 0px;即可.例如: <div class="wrap"> <ul> <li class=" ...

  5. java day02 记录

    一.介绍运算符使用,包含+ - * / 及 自增.三元运算等 package com.itheima_02; /* * 赋值运算符: * 基本的赋值运算符:= * 扩展的赋值运算符:+=,-=,*=, ...

  6. .Net Core在Centos7上初体验

    本文主要内容是简单介绍如何在centos7上开发.Net Core项目,在此之前我们首先了解下.Net Core的基本特性. 1 .Net Core和.Net FrameWork的异同 1.1 .Ne ...

  7. Angular记录(10)

    文档资料 速查表:https://www.angular.cn/guide/cheatsheet 风格指南:https://www.angular.cn/guide/styleguide Angula ...

  8. AJAX原理解析与兼容方法封装

    AJAX常用参数 AJAX对象兼容 AJAX对象方法与属性 AJAX封装兼容方法源码 AJAX全称Asynchronous JavaScript and XML(异步的JavaScript与XML), ...

  9. Collection和Map类图预览与比较

    类图 HashSet和TreeSet的区别:https://www.cnblogs.com/bobi1234/p/10759769.html HashSet和LinkedHashSet区别:https ...

  10. window下 多开redis

    1.先复制整个redis 一份 2.在配置文件redis.windows.conf .redis.windows-server.conf中  改端口 3.cmd命令 redis-server redi ...