自从 MS 为 Flash 控件专利把 IE 修改后,大家鼠标都要多点一次,这也罢了,但鼠标移过去上面多出个虚线框可着实难看。
为此各家都想出解决办法,可以看看 Sina、Sohu、163等
1.ObjectWrap
一般都是使用脚本 .write 出来,用的广的比如 SWFObject 的,前面我说的FLASH图片轮播、切换效果,仿新浪、CCTV中一个就使用的这个,但使用都比较麻烦,现在介绍个新的ObjectWrap ObjectSwap提供的实现只需要在<head>中引入一个脚本。虽然也是使用脚本,但其逻辑是在页面加载完成后,重写一次<object>标签来实现自动激活。页面中的flash依然是标准的HTML。不需要通过document.write写入。而且对于禁用js的用户Flash依然可以正常显示。这应该算是最unobtrusive的一种实现了。
使用:只要在 head 头中添加下面代码,连接这个 ObjectWrap Js,其他就不用管了,加载网页的时候会自动对页面中的 object 进行重写,激活问题就解决了 <script type="text/javascript" src="objectSwap.js"></script>
附件: objectSwap.zip
2.Dreamweaver公司也推出了解决办法
升级到dreamweaver8.02添加是会加入一个脚本,插入的flash文件就没有虚线框了 在script目录下添加一个脚本
script/AC_RunActiveContent.js
现在添加flash时这样用
<script src="Scripts/AC_RunActiveContent.js" type="text/javascript"></script> <script type="text/javascript"> AC_FL_RunContent( 'codebase',http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0','width','450','height','105','src','snow','quality','high','pluginspage',http://www.macromedia.com/go/getflashplayer','wmode','transparent','movie','snow','menu','false' ); //end AC code </script> 要注意,添加的flash的文件名不能带扩展名要去掉.swf文件名
附完整实例: 完整实例
3.Macromedia 公司的swfobject脚本解决方案
添加一个外接的swfobject.js文件 <head> <script type="text/javascript" src="swfobject.js"></script> </head> <body> <div id="flashcontent"> <strong>You need to upgrade your Flash Player</strong> Javascript turned off will see this. Content here allows you to leave out <code>noscript</code> 不支持flash时显示的文字 </div> <script type="text/javascript"> // <![CDATA[ var so = new SWFObject("so_tester.swf", "sotester", "300", "300", "8", "#FF6600"); so.addVariable("flashVarText", "this is passed in via FlashVars for example only"); // this line is optional, but this example uses the variable and displays this text inside the flash movie so.write("flashcontent"); // ]]> </script> </body>
在你的 HTML 页面头部区嵌入这个脚本文件:
<script type="text/javascript" src="swfobject.js"></script>
在你的 HTML 中写一个用来放 Flash 的容器,比如
<div id="flashcontent"> 这里放替换内容,用来在 Flash 无法显示时显示。 </div>
使用脚本替换这个内容:
<script type="text/javascript"> var so = new SWFObject("movie.swf", "mymovie", "200", "100", "7", "#336699"); //参数意思: 地址,Flash 的 id(不是容器的 id),宽,高,版本需求,背景颜色 //这是最基本的,如果你要高级的设置,就仔细翻翻说明吧。 so.write("flashcontent"); </script>
这脚本可以写在 HTML 中也可以写在外部 .js 文件中。
完整的例子和swfobject.js脚本文件: swfobject.zip
4.新浪的解决办法也是插入一个外部链接的js脚本
<script type="text/java" 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脚本文件打包:sinaflash.zip
5.一个老外的解决方法
插入ufo.js
附完整例子: ufo3_12.zip
6.另类的解决方式(ie7中无效)
//只要在 </body> 后面加上一行 <script src="javascript:'document.body.innerHTML+=''';"></script>
|