再谈IE中Flash控件的自动激活 ObjectWrap


Posted in Javascript onMarch 09, 2007

我在Ajax中国上曾经对比过国内门户网站对Flash激活限制的处理。除了qq.com,各大门户网站上的flash都已经解决了激活限制的问题。淘宝的页面上也常常会使用到Flash,激活限制导致用户的交互性体验感受不够友善。

我们一直想解决此问题。但是国内门户网站的做法都略为麻烦,要么需要为每个flash编写额外的js,要么就是在页面上放置flash的位置打上一块<script>补丁,利用SWFObject或者UFO提供的脚本写入flash。

网易的做法算是最技术的了,它的原理可以简单说一下(感谢在网易工作的朋友的阐析):通过外部引入的js代码覆盖主页面的document.write方法,这样在主页面上利用document.write方法时其实是外部文件的函数来写入的,实现了active控件下载和主页面分离。这样也就避开了激活限制。

可是,以上的所有解决方法,Flash都是通过脚本来写入的。比较注重web标准的网站会附上一段<noscript >来弥补禁用JavaScript的用户。但大多数是置之不理。

一番google(我真的是用了yahoo,不过没找到什么),在SitePoint上发现了一份很有价值的文献ObjectSwap: Bypassing the ActiveX Activation Issue in IE,如获至宝。

ObjectSwap提供的实现只需要在<head>中引入一个脚本。虽然也是使用脚本,但其逻辑是在页面加载完成后,重写一次<object>标签来实现自动激活。页面中的flash依然是标准的HTML。不需要通过document.write写入。而且对于禁用js的用户Flash依然可以正常显示。这应该算是最unobtrusive的一种实现了。

最新的ObjectWrap 可以从这里下载。

原来的脚本有6k,我简化了一些逻辑,并通过条件注释让脚本只为IE6/7服务。让人欣喜的是,不光是Flash,只要是<object>,ObjectWrap都会处理,这样我们在安全登录淘宝或者支付宝输入密码的时候,也可以节约一个单击的气力了。

至于为什么重写<object>可以解决激活限制,就不要深究了,正如IE那一系列让人抓狂的CSS hack。我们只能逼自己记住它,傻瓜才会去弄清楚为什么。

最后向ObjectWrap的作者 Karina Steffens 致敬!

Javascript 相关文章推荐
得到form下的所有的input的js代码
Nov 07 Javascript
写出高效jquery代码的19条指南
Mar 19 Javascript
JavaScript分析、压缩工具JavaScript Analyser
Dec 31 Javascript
深入探究使JavaScript动画流畅的一些方法
Jun 30 Javascript
使用AmplifyJS组件配合JavaScript进行编程的指南
Jul 28 Javascript
DIV+CSS+jQ实现省市联动可扩展
Jun 22 Javascript
jquery获取transform里的值实现方法
Dec 12 jQuery
基于vue cli 通过命令行传参实现多环境配置
Jul 12 Javascript
Vue的生命周期操作示例
Sep 17 Javascript
JS设置自定义快捷键并实现图片上下左右移动
Oct 17 Javascript
JS实现网站吸顶条
Jan 08 Javascript
手把手教你实现 Promise的使用方法
Sep 02 Javascript
javascript的对话框详解与参数
Mar 08 #Javascript
打开超链需要“确认”对话框的方法
Mar 08 #Javascript
javascript学习随笔(使用window和frame)的技巧
Mar 08 #Javascript
关于使用runtimeStyle属性问题讨论文章
Mar 08 #Javascript
用js判断用户浏览器是否是XP SP2的IE6
Mar 08 #Javascript
在IE模态窗口中自由查看HTML源码的方法
Mar 08 #Javascript
encode脚本和normal脚本混用的问题与解决方法
Mar 08 #Javascript
You might like
评分9.0以上的动画电影,剧情除了经典还很燃
2020/03/04 日漫
一个很不错的PHP翻页类
2009/06/01 PHP
php实现ip白名单黑名单功能
2015/03/12 PHP
PHP的mysqli_ssl_set()函数讲解
2019/01/23 PHP
PHPstorm激活码2020年5月13日亲测有效
2020/09/17 PHP
JavaScript中几个重要的属性(this、constructor、prototype)介绍
2013/05/19 Javascript
uploadify在Firefox下丢失session问题的解决方法
2013/08/07 Javascript
JavaScript中实现sprintf、printf函数
2015/01/27 Javascript
javascript判断并获取注册表中可信任站点的方法
2015/06/01 Javascript
举例讲解如何判断JavaScript中对象的类型
2016/04/22 Javascript
jQuery图片轮播(二)利用构造函数和原型创建对象以实现继承
2016/12/06 Javascript
javascript读取文本节点方法小结
2016/12/15 Javascript
el表达式 写入bootstrap表格数据页面的实例代码
2017/01/11 Javascript
JavaScript实现百度搜索框效果
2020/03/26 Javascript
详解小程序毫秒级倒计时(适用于拼团秒杀功能)
2019/05/05 Javascript
layui table 列宽百分比显示的实现方法
2019/09/28 Javascript
用Python和MD5实现网站挂马检测程序
2014/03/13 Python
python实现京东秒杀功能
2018/07/30 Python
对python指数、幂数拟合curve_fit详解
2018/12/29 Python
Python实现去除图片中指定颜色的像素功能示例
2019/04/13 Python
Python类中self参数用法详解
2020/02/13 Python
python opencv 实现读取、显示、写入图像的方法
2020/06/08 Python
python list等分并从等分的子集中随机选取一个数
2020/11/16 Python
Clarks英国官方网站:全球领军鞋履品牌
2016/11/26 全球购物
土耳其时尚购物网站:Morhipo
2017/09/04 全球购物
台湾森森购物网:U-mall
2017/10/16 全球购物
美国气象仪器、花园装饰和墙壁艺术商店:Wind & Weather
2019/05/29 全球购物
耐克波兰官方网站:Nike波兰
2019/09/03 全球购物
工程总经理工作职责
2013/12/09 职场文书
前台接待员岗位职责
2014/01/02 职场文书
教师师德考核自我评价
2014/09/13 职场文书
2014年医院工作总结
2014/11/20 职场文书
学校百日安全活动总结
2015/05/07 职场文书
Mysql 性能监控及调优
2021/04/06 MySQL
Tensorflow与RNN、双向LSTM等的踩坑记录及解决
2021/05/31 Python
redis数据一致性的实现示例
2022/03/18 Redis