再谈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 相关文章推荐
基于jquery &amp; json的省市区联动代码
Jun 26 Javascript
获取表单控件原始(初始)值的方法
Aug 21 Javascript
原生js和jQuery随意改变div属性style的名称和值
Oct 22 Javascript
JavaScript实现的一个计算数字步数的算法分享
Dec 06 Javascript
jquery移动节点实例
Jan 14 Javascript
Javascript实现div的toggle效果实例分析
Jun 09 Javascript
浅谈ECMAScript6新特性之let、const
Aug 02 Javascript
JS实现的贪吃蛇游戏完整实例
Jan 18 Javascript
简单了解node npm cnpm的具体使用方法
Feb 27 Javascript
详解vue使用插槽分发内容slot的用法
Mar 28 Javascript
vue3中provide && inject的使用
Jul 01 Vue.js
详解Anyscript开发指南绕过typescript类型检查
Sep 23 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
PHP使用PHPexcel导入导出数据的方法
2015/11/14 PHP
一波PHP中cURL库的常见用法代码示例
2016/05/06 PHP
PHP MYSQL简易交互式站点开发
2016/12/27 PHP
PHP实现的分解质因数操作示例
2018/08/01 PHP
laravel excel 上传文件保存到本地服务器功能
2019/11/14 PHP
理解JavaScript的caller,callee,call,apply
2009/04/28 Javascript
使用jquery动态加载js文件的方法
2014/12/24 Javascript
js控制网页前进和后退的方法
2015/06/08 Javascript
nodejs密码加密中生成随机数的实例代码
2017/07/17 NodeJs
vue params、query传参使用详解
2017/09/12 Javascript
微信小程序使用wxParse解析html的方法示例
2019/01/17 Javascript
浅谈 Webpack 如何处理图片(开发、打包、优化)
2019/05/15 Javascript
Vue CLI项目 axios模块前后端交互的使用(类似ajax提交)
2019/09/01 Javascript
简单实现节流函数和防抖函数过程解析
2019/10/08 Javascript
layui 解决form表单点击无反应的问题
2019/10/25 Javascript
js中位数不足自动补位扩展padLeft、padRight实现代码
2020/04/06 Javascript
Vue 数据绑定的原理分析
2020/11/16 Javascript
vue实现登录功能
2020/12/31 Vue.js
[09:31]2016国际邀请赛中国区预选赛Yao赛后采访 答题送礼
2016/06/27 DOTA
[58:32]EG vs Liquid 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
python抓取某汽车网数据解析html存入excel示例
2013/12/04 Python
Python pickle类库介绍(对象序列化和反序列化)
2014/11/21 Python
selenium+python 对输入框的输入处理方法
2018/10/11 Python
python常用排序算法的实现代码
2019/11/08 Python
python 自定义异常和主动抛出异常(raise)的操作
2020/12/11 Python
英国知名衬衫品牌美国网站:Charles Tyrwhitt美国
2016/08/28 全球购物
凯特方迪化妆品官网:Kat Von D Beauty
2016/11/15 全球购物
应届生.NET方向面试题
2015/05/23 面试题
个人充满哲理的自我评价
2014/02/20 职场文书
中式婚礼主持词
2014/03/13 职场文书
亮化工程实施方案
2014/03/17 职场文书
文明之星事迹材料
2014/05/09 职场文书
印刷技术专业自荐信
2014/09/18 职场文书
市委常委会班子党的群众路线教育实践活动整改方案
2014/10/25 职场文书
2016年寒假生活小结
2015/10/10 职场文书
nginx配置文件使用环境变量的操作方法
2021/06/02 Servers