再谈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 相关文章推荐
FF IE兼容性的修改小结
Sep 02 Javascript
JS远程获取网页源代码实例
Sep 05 Javascript
7个让JavaScript变得更好的注意事项
Jan 28 Javascript
js获取页面及个元素高度、宽度的代码
Apr 26 Javascript
AngularJS使用指令增强标准表单元素功能
Jul 01 Javascript
jQuery判断是否存在滚动条的简单方法
Sep 17 Javascript
jQuery表单设置值的方法
Jun 30 jQuery
javascript 产生随机数的几种方法总结
Sep 26 Javascript
基于复选框demo(分享)
Sep 27 Javascript
微信小程序上传多图到服务器并获取返回的路径
May 05 Javascript
Swiper.js实现移动端元素左右滑动
Sep 08 Javascript
Element Dropdown下拉菜单的使用方法
Jul 26 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
PDO防注入原理分析以及注意事项
2015/02/25 PHP
PHP实现QQ、微信和支付宝三合一收款码实例代码
2018/02/19 PHP
Laravel模型事件的实现原理详解
2018/03/14 PHP
JavaScript 克隆数组最简单的方法
2009/02/12 Javascript
面向对象的javascript(笔记)
2009/10/06 Javascript
7个Javascript地图脚本整理
2009/10/20 Javascript
基于jquery的图片的切换(以数字的形式)
2011/02/14 Javascript
JQuery入门——用映射方式绑定不同事件应用示例
2013/02/05 Javascript
你所不了解的javascript操作DOM的细节知识点(一)
2015/06/17 Javascript
jquery+css实现动感的图片切换效果
2015/11/25 Javascript
详解JavaScript逻辑And运算符
2015/12/04 Javascript
bootstrap输入框组代码分享
2016/06/07 Javascript
jQuery EasyUI菜单与按钮详解
2016/07/13 Javascript
jQuery禁用快捷键例如禁用F5刷新 禁用右键菜单等的简单实现
2016/08/31 Javascript
使用JS批量选中功能实现更改数据库中的status状态值(批量展示)
2016/11/22 Javascript
headjs实现网站并行加载但顺序执行JS
2016/11/29 Javascript
详解基于angular路由的requireJs按需加载js
2017/01/20 Javascript
从零学习node.js之模块规范(一)
2017/02/21 Javascript
使用JS在浏览器中判断当前网络连接状态的几种方法
2017/05/05 Javascript
webpack学习笔记之代码分割和按需加载的实例详解
2017/07/20 Javascript
vue父组件中获取子组件中的数据(实例讲解)
2017/09/27 Javascript
纯JS实现出生日期[年月日]下拉菜单效果
2018/06/01 Javascript
vscode中vue-cli项目es-lint的配置方法
2018/07/30 Javascript
解决layui中table异步数据请求不支持自定义返回数据格式的问题
2018/08/19 Javascript
python支持断点续传的多线程下载示例
2014/01/16 Python
Python3多线程爬虫实例讲解代码
2018/01/05 Python
使用Django搭建web服务器的例子(最最正确的方式)
2019/08/29 Python
First Aid Beauty官网:FAB急救面霜
2018/05/24 全球购物
美丽的现代设计家具:2Modern
2018/07/26 全球购物
泰国健康和美容服务预订网站:GoWabi
2019/06/03 全球购物
如何从一个文件档案的尾端新增记录
2016/12/02 面试题
顶岗实习接收函
2014/01/09 职场文书
会计工作心得体会
2014/01/13 职场文书
教师开学感言
2014/02/14 职场文书
《第一次抱母亲》教学反思
2014/04/16 职场文书
python库sklearn常用操作
2021/08/23 Python