欢迎光临

木子屋

标题: 再谈IE中Flash控件的自动激活

作者: dnawo

日期: 2008-01-02 04:31 PM

分类: HTML/CSS

内容: 我在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　致敬！

+ 查看当前日志评论 (0)

登录

────────────

木子屋

PJBlog3 v3.2.9.518 Inside.

Processed In 0.770 ms

返回

标题: 再谈IE中Flash控件的自动激活

你没有权限发表评论

────────────

木子屋

PJBlog3 v3.2.9.518 Inside.

Processed In 0.770 ms

返回

暂无评论

返回

────────────

木子屋

PJBlog3 v3.2.9.518 Inside.

Processed In 0.801 ms

返回