网页中Flash激活限制的处理方法

所属分类: 媒体动画 / Flash教程 阅读数: 60
收藏 0 赞 0 分享
本文对比了国内门户网站对网页中Flash激活限制的处理方法和技巧。
今年年初之时,微软发布了一个针对ActiveX控件的补丁,安装此补丁后的IE6中,当ActiveX控件获得焦点时,IE自动为其套上一个虚线矩形边框,并提示用户按下回车或者空格键以激活控件。刚刚正式发布中文版的IE7也是同样的处理。

最受影响的想必就是Flash控件了。当时我认为这对广告满屏飞的门户网站来说一定是个坏消息。不过微软也没有把事做绝,留了一条
脚本方式解决的后路。

今天突然产生兴趣,想看看这些门户们如何应对此限制的。一番比较下来,给大家汇报一下:

新浪

首先在HTML的<head>中加载一个脚本:

<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;
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中无效)
更多精彩内容其他人还在看

Flash 脚本游戏开发教程第五课

搞了半天的鸟CLASS,我们又回到了做游戏的内容上来。 咱们学那么多知识,目的也只为了更好的来做游戏。这个游戏吧,前面也有朋友说到了,根本不用CLASS,做个单个FLA文件F9按了猛打代码,然后MC里点开了东鸟点代码,西鸟点代码,也能完成。没错,确实这样。 我自己相当长一
收藏 0 赞 0 分享

Flash 脚本游戏开发教程第六课

范例接宝游戏中人物类的CLASS讲解 首先请下载源文件:CLASS.rar 下载好,打开一看,如下: 一个FLA主文件:  run_game.fla 三个目录:
收藏 0 赞 0 分享

Flash 脚本游戏开发教程第七课

先补充个游戏里的结构: _root下有三个空MC: pl,item和xs pl这个空MC是用来attach人物的 item这个空MC是用来attach宝物的 xs这个MC是用来attach显示得分的 为什么要这么做呢?……因为管理方便呀~以后你会慢慢体会到
收藏 0 赞 0 分享

Flash 脚本游戏开发教程第八课

范例接宝游戏中得分显示类和时间控制类的CLASS讲解 事实上这两部分比较简单 所以并在一起讲解了 讲解前先点开FLA文件,把这两个MC看看,对MC构造了解了,才能写CLASS嘛~ 看下得分显示类的代码: class game.Score_view extends
收藏 0 赞 0 分享

Flash AS实现的蝌蚪摆尾动画的教程

本例介绍使用Flash的AS编写蝌蚪摆尾动画效果,希望朋友们喜欢~~     场景里代码 [code]   Object.environment = this;   Math.prototype.degrees = function (r)   {  
收藏 0 赞 0 分享

flash怎么制作文字垂直翻转效果的效果?

flash怎么制作文字垂直翻转的效果?flash中想要制作一个文字翻转制作成倒影的效果,该怎么制作文字翻转效果呢?下面我们就来看看详细的教程,需要的朋友可以参考下
收藏 0 赞 0 分享

flash怎么给矩形添加镂空圆形效果?

flash怎么给矩形添加镂空圆形效果?flash中绘制的矩形想要添加一个镂空圆的效果,该怎么制作呢?下面我们就来看看详细的教程,需要的朋友可以参考下
收藏 0 赞 0 分享

flash cs6鼠标跟随效果实现代码分享

flash cs6想要实现鼠标跟随效果?该怎么制作呢?今天我们就来看看使用as2.0实现鼠标跟随效果的教程,需要的朋友可以参考下
收藏 0 赞 0 分享

flash怎么画溜冰的小企鹅图形?

flash怎么画溜冰的小企鹅图形?flash中想要使用工具绘制一个正在溜冰的小企鹅,该怎么绘制这个画面呢?下面我们就来看看详细的教程,需要的朋友可以参考下
收藏 0 赞 0 分享

Flash选择工具怎么改变对象形状?

Flash选择工具怎么改变对象形状?Flash中绘制的图形想要改变形状,比如画三角形变成一个伞的形状,该怎么操作呢?下面我们就来看看详细的教程,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多