AS和JS在Maxthon、TT等浏览器无法通信的问题
来源:互联网 发布:linux rsync 本地同步 编辑:程序博客网 时间:2024/05/21 14:43
出自:http://popotang.com/blog/as-js-maxthon-bug.html
某flash文件嵌入在网页上,提供了一些针对JS的接口以方便JS调用,这些接口是通过flash的ExternalInterface.call方法在flash里声明的。
在IE、Firefox等浏览器下,JS调用这些接口没有问题的,但是在Maxthon、TT、TheWorld浏览器下,第一次打开页面是可以的,刷新了页面就找不到这些接口了,JS直接报错说未声明。按理说Maxthon、TT这些浏览器也是IE的内核,只不过是装了个壳而已,怎么会有这个问题?既然第一次没有问题,初步分析就是这些浏览器对flash做了缓存处理。根据这个结论,做了个试验,在加载flash文件价格随即参数,防止缓存,反复测试没问题,但是这样做,每次都从服务器拉取文件,对服务器压力、带宽和打开速度都有很大影响,有没有更好的方法?
分析症状,应该是flash初始化的问题,而接口ExternalInterface.call是在初始化的时候注册的,是否是这里的问题呢?
反复测试,最终找到个解决问题的方案:
把所有接口声明的ExternalInterface.call抽出来放到一个单独的函数里,比如起名叫InitExtCall(这个名字可以随便命名的),然后在flash初始化函数里改成 setTimeout(InitExtCall,0); 问题解决。
至于为什么这样做可以解决,没有很深入的去分析。但是分析下javascript的setTimeout原理,无论在哪里声明,其作用域链都是在window下执行,有时候我们故意用这样的方式来解决一些跳转的问题,flash下是否也是这样的问题呢?
[2010-11-21] 在网上搜索发现另外一个解决方案:
在使用 innerHTML创建了flash 后,检查暴露函数如果不存在,即调用__flash__addCallback(flashObj, “funcName”);人工初始化暴露函数。
- AS和JS在Maxthon、TT等浏览器无法通信的问题
- TT浏览器的收藏夹的问题
- As和js通信问题完全解析(解决addcallback失效的问题)
- As和js通信问题完全解析(解决addcallback失效的问题)
- ie7 ie8 maxthon等浏览器下eWebEditor 错误的终极解决办法
- 解决three.js加载外部obj文件在chrome浏览器中无法显示的问题
- 用AS+JS实现IE等浏览器的强制弹出窗口源代码
- as和js通信addcallback失效
- JS和AS通信addcallback失效
- 对FckEditor编辑器在MAXTHON浏览器下选择服务器文件对话框显示不正常的改进
- Maxthon浏览器添加书签时造成焦点遗失问题的解决
- js在ie、火狐等浏览器的兼容
- AS和JS通信,Flash和Html通信
- onunload在Maxthon(傲游)中的问题
- 什么决定我们浏览器的选择--我看Firefox和Maxthon(1)
- 什么决定我们浏览器的选择--我看Firefox和Maxthon(2)
- 什么决定我们浏览器的选择--我看Firefox和Maxthon (3)
- JS与AS之间的相互通信
- 字体颜色的刷新问题
- 多线程陷阱(所有静态初始化块中的代码不一定是类初始化操作)
- qTip2小技巧:为多个目标元素共享一个tip
- C++ 如何定义头文件?为何要用到ifndef和#define,#endif?有何用
- USPCAT技术狂人社区
- AS和JS在Maxthon、TT等浏览器无法通信的问题
- 编程珠玑(一)位图
- 企业级路由器与交换机学习笔记
- Android编程之Android Permission 中英对照大全
- flash与js跨域调用
- grub2 配置备忘
- POJ 1182 食物链
- fatal error C1083: 无法打开包含文件:“atlapp.h”:No such file or directory
- 关于switch详解