网络编程
位置:首页>> 网络编程>> JavaScript>> 对比国内门户网站对Flash激活限制的处理(2)

对比国内门户网站对Flash激活限制的处理(2)

作者:醒来  发布时间:2007-08-23 11:29:00 

标签:Flash,激活

网易

网易就是不一样,处理手段显得很有技术性。首先加载脚本:


<script src="/DartRichMedia_1_03.js"></script> 

页面上直接用 docuemnt.write 写入 Flash 的HTML代码。


按照微软的说明,直接在页面上使用docuemnt.write写入是不能饶开激活限制的,Hack就是那个加载的js中。代码如下:


 if(typeof(dclk_isDartRichMediaLoaded) == "undefined") {     dclk_isDartRichMediaLoaded = true;     function dclkWrite(str){         if(dclk_shouldOverride) {             dclk_original_documentWrite(str);         }         else{             document.write(str);         }     }     function dclkWriteln(str){         if(dclk_shouldOverride) {             dclk_original_documentWriteLn(str);         }         else{             document.writeln(str);         }     }     function dclk_isInternetExplorer() {         return (navigator.appVersion.indexOf("MSIE") != -1 && navigator.userAgent.indexOf("Opera") < 0);     }     dclk_shouldOverride = dclk_isInternetExplorer();     if(dclk_shouldOverride) {         dclk_original_documentWrite = document.write;         dclk_original_documentWriteLn = document.writeln;         document.write = dclkWrite;         document.writeln = dclkWriteln;     } }  

用这么迂回的方式覆盖JS默认的document.write就可以饶开激活限制?是不是有点诡异?希望网易的工程师能给大家解读一下。


雅虎中国

Yahoo!中国对Flash的处理中规中距,就是微软文章中说明的,使用一个外连的js文件,在js中用docuemnt.write 写入。

腾讯

默认Flash并没有激活! 后来者虽然气势逼人,但毕竟还需要时间打磨:)。

稍做总结吧,新浪/搜狐使用的SWFObject实际原理是在外连的JS中用innerHTML间接导入Flash代码。这和Yahoo!中国的处理方式归根揭底都基于微软的说明。

使用 SWFObject 还能解决XHTML校验的问题,不过我想门户们都还不会太在意这个:)。

网易的方式比较邪门,很有骇客色彩。不过还有比它更邪门的方式:

//只要在 </body> 后面加上一行 <script src="javascript:’document.body.innerHTML+=’’’;"></script> 

真的有效呢! (在我的IE7中无效)

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com