再谈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 相关文章推荐
[JS]点出统计器
Oct 11 Javascript
用unescape反编码得出汉字示例
Apr 24 Javascript
alert和confirm功能介绍
May 21 Javascript
jQuery操作动态生成的内容的方法
May 28 Javascript
Node.js 日志处理模块log4js
Aug 28 Javascript
Node.js 中exports 和 module.exports 的区别
Mar 14 Javascript
JS中原始值和引用值的储存方式示例详解
Mar 23 Javascript
AngularJS 多指令Scope问题的解决
Oct 25 Javascript
JS定义函数的几种常用方法小结
May 23 Javascript
vue 实现 rem 布局或vw 布局的方法
Nov 13 Javascript
浏览器JavaScript调试功能无法使用解决方案
Sep 18 Javascript
Element-ui upload上传文件限制的解决方法
Jan 22 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中判断变量为空的几种方法小结
2013/11/12 PHP
PHP文件操作实例总结
2016/09/27 PHP
通过PHP的Wrapper无缝迁移原有项目到新服务的实现方法
2020/04/02 PHP
Javascript之this关键字深入解析
2013/11/12 Javascript
同域jQuery(跨)iframe操作DOM(实例讲解)
2013/12/19 Javascript
jQuery 1.9使用$.support替代$.browser的使用方法
2014/05/27 Javascript
用javascript将数据导入Excel示例代码
2014/09/10 Javascript
JS实现可缩放、拖动、关闭和最小化的浮动窗口完整实例
2015/03/04 Javascript
jquery移动端TAB触屏切换实现效果
2020/12/22 Javascript
学做Bootstrap的第一个页面
2016/05/15 HTML / CSS
JavaScript html5利用FileReader实现上传功能
2020/03/27 Javascript
Angular4如何自定义首屏的加载动画详解
2017/07/26 Javascript
浅谈JavaScript find 方法不支持IE的问题
2017/09/28 Javascript
Vue组件中prop属性使用说明实例代码详解
2018/05/31 Javascript
记录一次完整的react hooks实践
2019/03/11 Javascript
js前端面试之同步与异步问题详解
2019/04/03 Javascript
微信小程序自定义导航栏实例代码
2019/04/05 Javascript
JavaScript 面向对象基础简单示例
2019/10/02 Javascript
深入理解Python中字典的键的使用
2015/08/19 Python
python修改字典键(key)的方法
2019/08/05 Python
python基于socket函数实现端口扫描
2020/05/28 Python
python和php哪个更适合写爬虫
2020/06/22 Python
深入浅出CSS3 background-clip,background-origin和border-image教程
2011/01/27 HTML / CSS
浅谈利用缓存来优化HTML5 Canvas程序的性能
2015/05/12 HTML / CSS
iphoneX 适配客户端H5页面的方法教程
2017/12/08 HTML / CSS
德国香水、化妆品和护理产品网上商店:Parfumdreams
2018/09/26 全球购物
自1926年以来就为冰岛保持温暖:66°North
2020/11/27 全球购物
初中高效课堂实施方案
2014/02/26 职场文书
环境工程专业自荐信范文
2014/06/24 职场文书
岗位安全生产责任书
2014/07/28 职场文书
2014年为民办实事工作总结
2014/12/20 职场文书
教代会闭幕词
2015/01/28 职场文书
毕业生个人自荐书
2015/03/05 职场文书
2017大学生寒假社会实践心得体会
2016/01/14 职场文书
《世界多美呀》教学反思
2016/02/22 职场文书
《Estab Life》4月6日播出 正式PV、主视觉图公开
2022/03/20 日漫