主页面调用iframe里面匿名Javascript函数的问题
来源:互联网 发布:店铺宝贝优化 编辑:程序博客网 时间:2024/05/22 02:27
这个问题出现已经几天了,今天终于解决了,特此记录下来。
问题的出现始于我在HTML5下采用Reveal.js来播放PPT和使用canvas来制作透明画板,二者结合以后,画板在顶层,PPT放在iframe里,在底层。
这样子,实现播放PPT的同时能够随意写划,但是首先出现的问题就是PPT无法控制,键盘事件被画板层捕捉,此问题出现时我就尝试使用Javascript把画板捕捉的键盘事件传送至iframe层,但是没有成功,后来用一个很简单的办法解决了这个问题。随后需要在平板上控制PPT的播放,此时没有键盘事件了,只能在屏幕上添加按钮,又出现了需要调用iframe层Javascript函数的问题,我先是走了许多弯路,以为问题出现在调用的函数不对,后来发现Reveal.js为了避免重复的变量或者函数声明引起错误把整个js文件用匿名函数实现了封装。借此机会我学习了Javascript的匿名函数,及其使用的好处,尝试了一些方法还是未能解决问题。
在整个过程中,我首先是寻找主页面调用iframe层Javascript函数的方法,但是当时我并不知道Reveal.js是被封装了的匿名函数,所以调用失败了。等我知道Reveal.js是匿名函数后我又去寻找调用匿名函数的方法,最后发现原来我要使用的方法Reveal.js早已封装成了API供我调用,但是仍旧不能成功。最后又回到主页面调用iframe子页面js函数这条老路,最终解决了问题。下面上方法:
首先是匿名函数:
(function() { // 匿名函数function right() { turnRight();}// 其他代码}()); // 立即执行
匿名函数内部声明的函数、通过var声明的变量等等都是内部的,不能被任何匿名函数以外的代码访问到。
调用匿名函数内部js函数的方法:
var Reveal = (function(global) {function right() { turnRight();}right1 = right; // 法一:利用没有var的变量声明的默认行为,在right成为全局变量(不推荐)global.right2= right; // 法二:直接在全局对象上添加right属性,赋值为right函数(推荐)return { // 法三:通过匿名函数返回值得到一系列接口函数集合对象,赋值给全局变量Reveal(推荐) right : right};}(window));
此处建议通过第三种方法提供API。
主页面访问iframe子页面js函数的方法:
var test= document.getElementById("mainiframe");test.contentWindow.right();主页面访问iframe子页面匿名js函数的方法(假设匿名函数就是上面的Reveal):
var test= document.getElementById("mainiframe");test.contentWindow.Reveal.right();
- 主页面调用iframe里面匿名Javascript函数的问题
- 在iframe里调用主页面里的js函数
- javascript中iframe里面的页面调用父窗口js函数的方法。
- javascript中iframe里面的页面调用父窗口js函数的方法
- 使iframe里面引用页透明,显示主页面的背景图片
- JavaScript匿名函数调用
- 关于javascript 匿名函数的调用方式
- Javascript自调用匿名函数的写法
- javascript调用匿名函数的多种方式
- 主页面与iframe的互相访问
- javascript调用iframe内的函数
- iframe里面的文件加载完,JavaScript才可以调用里面的JavaScript方法的解决办法
- aspx页面调用iframe标签里面的js函数
- 访问iframe里面的javascript函数、对象,兼容IE、Firefox
- 访问iframe里面的javascript函数、对象,兼容IE、Firefox
- JavaScript自调用匿名函数
- javascript 自调用匿名函数
- JavaScript 自调用匿名函数
- Android ViewHolder通用写法(简洁、减少代码量)
- 关于前端开发谈谈单元测试
- One Edit Distance
- 在服务器端判断request来自Ajax请求(异步)还是传统请求(同步)
- javascript考试系统倒计时
- 主页面调用iframe里面匿名Javascript函数的问题
- 心里装着什么,就会得到什么!
- android控件开发之TimePicker和DatePicker
- iPhone Icon and Image Sizes 包含iPhone6 和iPhone6 plus
- 第十六周OJ 项目Problem A: 逆序输出数组
- VS2010 安装部署 获取安装路径 执行相关程序 脚本
- Http访问方式GET/POST的测试工具Postman
- Qt_OpenGL:3D旋转自定义换色
- DP[0]