<b>网页中Flash激活限制的处理办法</b>[Flash设计]
本文“<b>网页中Flash激活限制的处理办法</b>[Flash设计]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
本文比较了国内门户网站对网页中Flash激活限制的处理办法和本领.
本年年初之时,微软公布了一个针对ActiveX控件的补钉,安装此补钉后的IE6中,当ActiveX控件得到核心时,IE自动为其套上一个虚线矩形边框,并提醒用户按下回车大概空格键以激活控件.方才正式公布中文版的IE7也是一样的处理.
最受影响的想必就是Flash控件了.当时我认为这对广告满屏飞的门户网站来说一定是个坏消息.不过微软也没有把事做绝,留了一条脚本方法办理的后路.
本日忽然产生爱好,想看看这些门户们若何应对此限制的.一番对比下来,给大家报告一下:
新浪
首先在HTML的中加载一个脚本:
代码: < script type="text/javascript" src="http://image2.sina.com.cn/home/sinaflash.js">< /script >
通过以下脚本在HTML中写入Flash广告:
代码: < script type="text/javascript">
var objFlash = new sinaFlash("http://ad4.sina.com.cn/200611/17/73696_gundong.swf", "", "279", "56", "7", "", false,"high");
objFlash.addParam("wmode", "opaque");
objFlash.write("flashcontent_02AE4A");
< /script >
下载sinaflash.js来看,其实恰是 Adobe 倡议利用的SWFObject.参阅Adobe的文章 JavaScript Flash Player Detection and Embedding with SWFObject.Adobe还供应了一套别的的办理筹划,并集成到Dreamweaver 中,不过仿佛用的人不多.
新浪将其洗面革心,大概加入了一些自己的处理,我没有爱好去弄清楚:).但我想固然人家是MIT License,但版权信息还是不要去掉为好.
搜狐的手段和新浪如出一辙,首先加载:
代码: < script src="http://www.sohu.com/sohuflash_1.js" type=text/javascript>< /script >
调用:
代码: var sohuFlash2 = new sohuFlash("http://images.sohu.com/cs/button/lexus/4501051127.swf", "_bflexO", "450", "105", "7");
sohuFlash2.addParam("quality", "high");
sohuFlash2.addParam("wmode", "Opaque");
sohuFlash2.addVariable("clickthru","http://adc.go.sohu.com/200611/10083225efd048d2153be48383171872.php");
sohuFlash2.write("_turnAD9");
sohuflash_1.js 一样改写自SWFObject,并且改得更面目全非.没必要吧,同学.
你说是搜狐抄的新浪,还是新浪抄的搜狐?
网易就是不一样,处理手段显得很有技术性.首先加载脚本:
代码: < script src="/DartRichMedia_1_03.js">< /script >
页面上直接用 docuemnt.write 写入 Flash 的HTML代码.
按照微软的阐明,直接在页面上利用docuemnt.write写入是不能饶开激活限制的,Hack就是那个加载的js中.代码以下:
代码: if(typeof(dclk_isDartRichMediaLoaded) == "undefined") {
dclk_isDartRichMediaLoaded = true; mb5u.Com-模板无忧
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校验的问题,不过我想门户们都还不会太在乎这个:).
网易的方法对比邪门,很有骇客色彩.不过还有比它更邪门的方法:
//只要在 背面加上一行
代码: < script src="javascript:'document.body.innerHTML =''';">< /script >
以上是“<b>网页中Flash激活限制的处理办法</b>[Flash设计]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |