实验证明LocalConnection跨浏览器功能陷落,现在的世界已经不是我记忆中的世界
2017-07-11 23:10
555 查看
LocalConnect是做什么用的,引用Adobe原文:在运行于同一台客户端计算机上的 SWF 文件之间进行通信,但这些 SWF 文件可以在不同的应用程序中运行。
但是这个类已经不像9年前那么好用了,本人花了2个小时时间,做了验证的试验,希望能给更多人节约一些时间。
LocalConnect特性如下:
1. 一个通道只能单向链接一对swf(一收一发)
2. 当一个通道已经被注册了,再被其他swf重新注册会引发错误(AsyncErrorEvent)
3. 当注册某个通道的swf被关闭后,该通道得到释放,可被其他swf成功注册
实验原理如下:
1. 按数字递增生成通道名并进行注册,直到成功注册LocalConnect通道
2. 在该通道上注册2个接受其他swf件的函数。一个是set方法,此方法接收一个由其他swf生成的随机数,收到后储存并显示出来。另一个是get方法,此方法接收一个通道名将已存储的随机数发送到此通道的set方法上。
3. 批量(从1-100按规则生成通道名,碰到本swf通道名跳过)的向通道发get方法进行请求,请求参数中带上步骤1中注册成功的通道名。
4. 如果进行了步骤3后,set方法被调用到,则进入到步骤2中的相关步骤,若未得到响应,则生成一个随机数然后存储起来并显示到舞台上。
实验结论如下:
1. 通用FlashPlayer与FireFox版Player之间可以通信(含客户端本地swf)
2. Google内置FlashPlayer与上述两Player之间不能通信
3. 部分浏览器的小号窗口与非小号窗口之间,小号窗口之间不能通信(搜狗不可以,遨游可以)
这个是有历史原因的,AS3发布是在2006年,当时的绝大多数人的浏览器为IE或Firefox,GoogleChrome还没远有问世,而这个时候Adobe发布了AS3当然也包含LocalConnect。也就是说在那个时候如果我们用LocalConnect来实现不同网页或浏览器中的swf通信是完全没有问题的,但时过境迁,GoogleChrome内置了一个比较特殊的FlashPlayer,一些浏览器具有多核特性,很多浏览器有小号窗口隐私窗口等功能......这些浏览器厂商的技术实现手段后天造成了LocalConnect的失效。我所熟悉的事物变得陌生了,又一次证明了一句话:这个世界在变,唯一不变的就是改变本身。
附件代码
但是这个类已经不像9年前那么好用了,本人花了2个小时时间,做了验证的试验,希望能给更多人节约一些时间。
LocalConnect特性如下:
1. 一个通道只能单向链接一对swf(一收一发)
2. 当一个通道已经被注册了,再被其他swf重新注册会引发错误(AsyncErrorEvent)
3. 当注册某个通道的swf被关闭后,该通道得到释放,可被其他swf成功注册
实验原理如下:
1. 按数字递增生成通道名并进行注册,直到成功注册LocalConnect通道
2. 在该通道上注册2个接受其他swf件的函数。一个是set方法,此方法接收一个由其他swf生成的随机数,收到后储存并显示出来。另一个是get方法,此方法接收一个通道名将已存储的随机数发送到此通道的set方法上。
3. 批量(从1-100按规则生成通道名,碰到本swf通道名跳过)的向通道发get方法进行请求,请求参数中带上步骤1中注册成功的通道名。
4. 如果进行了步骤3后,set方法被调用到,则进入到步骤2中的相关步骤,若未得到响应,则生成一个随机数然后存储起来并显示到舞台上。
实验结论如下:
1. 通用FlashPlayer与FireFox版Player之间可以通信(含客户端本地swf)
2. Google内置FlashPlayer与上述两Player之间不能通信
3. 部分浏览器的小号窗口与非小号窗口之间,小号窗口之间不能通信(搜狗不可以,遨游可以)
这个是有历史原因的,AS3发布是在2006年,当时的绝大多数人的浏览器为IE或Firefox,GoogleChrome还没远有问世,而这个时候Adobe发布了AS3当然也包含LocalConnect。也就是说在那个时候如果我们用LocalConnect来实现不同网页或浏览器中的swf通信是完全没有问题的,但时过境迁,GoogleChrome内置了一个比较特殊的FlashPlayer,一些浏览器具有多核特性,很多浏览器有小号窗口隐私窗口等功能......这些浏览器厂商的技术实现手段后天造成了LocalConnect的失效。我所熟悉的事物变得陌生了,又一次证明了一句话:这个世界在变,唯一不变的就是改变本身。
附件代码
/////////////////////////////////////////////////////////// // AAA_trunk.as // Macromedia ActionScript Implementation of the Class AAA_trunk // Created on: 2015-11-11 上午11:19:21 // Original author: Zhangwei /////////////////////////////////////////////////////////// package { import flash.events.StatusEvent; import flash.net.LocalConnection; import flash.text.TextField; import flash.utils.clearTimeout; import flash.utils.setTimeout; /** * LocalConnection研究 * @author Zhangwei * @version 1.0 * * 注: * 1. 通用FlashPlayer与FireFox版Player之间可以通信(含客户端本地swf) * 2. Google内置FlashPlayer与上述两Player之间不能通信 * 3. 部分浏览器的小号窗口与非小号窗口之间,小号窗口之间不能通信(搜狗不可以,遨游可以) * * * @created 2015-11-11 上午11:19:21 */ [SWF(width="600" , height="600")] public class AAA_trunk extends MyRoot{ private static const ConnectionName:String = "connectionName"; private static const GetLC:String = "getLC"; private static const SetLC:String = "setLC"; private var _myName:String; private var _times:int = 0; private var _lc:String = null; private var _local:LocalConnection; private var _btn:Button; private var _txt:TextField; private var _functionId:uint; public function AAA_trunk() { super() "
相关文章推荐
- 现在QQ空间不是已经支持其他浏览器的么,昨天我还在linux下用opera看朋友的QQ空间呢。PS:...
- 浏览器功能一览:IE曾经垃圾,现在垃圾,将来仍然很垃圾
- 我的VS2005采用的是web开发设置。不知道动到了那里,现在每次按F5启动调试的时候总是不能成功启动调试。效果和按CTRL+F5一样。就是把项目显示在了浏览器之后,那个启动调试的绿色按钮还可以使用,不是暗色的。
- [随笔]现在已经不是我们的江湖了
- 用安装python模块出现error: command 'gcc' failed with exit status 1 ,实际已经安装了gcc的,还是报错,然后发觉是failed不是not found,这说明这个错误个gcc没多大关系,应该是缺少某些功能模块,执行如下操作:
- 1 开发一个注重性能的JDBC应用程序不是一件容易的事. 当你的代码运行很慢的时候JDBC驱动程序并不会抛出异常告诉你。 本系列的性能提示将为改善JDBC应用程序的性能介绍一些基本的指导原则,这其中的原则已经被许多现有的JDBC应用程序编译运行并验证过。 这些指导原则包括: 正确的使用数据库MetaData方法 只获取需要的数据 选用最佳性能的功能 管理连
- 关闭浏览器自动记忆功能
- 有关Flappy的实现(基本功能已经实现, 但用户体验不是很好,希望各位批评指正)
- 关于INPUT的autocomplete="off" 属性(浏览器表单默认的记忆功能)
- 区块链游戏:哈希世界,已经不是那个没有域名的哈希世界了
- javascript检查浏览器是否已经启用XX功能
- 进现在公司已经一年了,这一年中我还是有一些收获的。下面将我写的世界编辑器的一些截图放出来,欢迎感兴趣的人和我交流。
- 不许动!现在你已经被虚拟世界占领了!(很好的一篇文章)
- 检查浏览器是否已经启用Java支持功能
- 揭秘刘安和兄弟连不是骗子吗,手法如此传销,培训机构竟利用网络营销上市 不知谣言从何而起,最近很多人在网上大肆宣称:兄弟连教育现在已经失去创立之初“变态严管,让学习成为一种习惯”的初衷,只是在一味的兄
- C语言数据结构之单向链表(已经调试可以实现相应的功能了,可是还是有几个问题现在还是不大理解,希望大家能够一起探讨)
- javascript检查浏览器是否已经启用XX功能
- 浏览器操作系统开发功能设想:新记忆功能
- 4程序员小飞原计划三天完成某个任务,现在是第三天的下午,他马上就可以做完。但是在实现功能的过程中,他越来越意识到自己原来设计中的弱点,他应该采取另一个办法,才能避免后面集成阶段的额外工作。但是他如果现在就改弦更张,那势必要影响自己原来估计的准确性,并且会花费额外的时间,这样他的老板、同事也许会因此看不起他。如果他按部就班地按既定设计完成,还要花更多时间在后续集成上,但那就不是他个人的问题了,怎么办
- QL语句通常不是很容易理解,特别是你阅读别人已经写好的语句。因此,很多人指出我们应该遵循在其他语言中遵循的原则,像加上注释和功能模块化。我最新注意到一个很多人都没有使用的Postgres关键特性,也就