我在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 致敬!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
更新日志
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]