微软更新了IE浏览器针对IE的更新使ActiveX内容不能自载入的问题引起了许多人的关注.这些改变可以在Adobe的某些软件中看到包括flashplayerAuthorware player shockwave Player SVG ViewerHelp Center 和 Adobe Reader当然还有 Sun Java Apple QuickTime RealNetworksRealPlayer和其它的ActiveX 通过某些方法嵌入到html页面中的交互内容可能不能响应用户的输入(例如键盘鼠标)直到用户点击要么激活要么继续loading 下面我的看看它到底是怎么一回事并怎样解决它来使用户最大限度的方便浏览因为webstudio 的flash网站建设是主要的业务所以很是想找到简单的解决办法. 问题 当你查看web页面时windows下的IE浏览器会将ActiveX内容显不为一个矩形框和一个提示内容为Click to activate and use this control意思就是你需要激活ActiveX的内容才可以查看或交互控制ActiveX内容可能或不能象你预想的那样载入并进行播放 可以查看Adobe提供的演示这里 Adobe的解决方案 有如下两种解决方法: 方法 如果你浏览了包含ActiveX的页面点击这个内容激活它 方法 如果你正在开发一个网站移除针对ActiveX内容所需的用户激活过程针对此Adobe提供了一份基于javascriptr 解决文档.这里 通过使用Adobe的解决文档可以解决上述问题. 那么除了上述方法之外还有没有其它更简单的方法呢答案是肯定的.可以使用deconcept 的flashObject 相比而言会比使用Adobe的方法更简单一些.并且运行状况是良好的.这里下载Download FlashObject ( hits) 基本方法如下 只需要将flashobjectjs 包含在你的html页面内然后加上一点javascript代码嵌入flash swf就ok了. 它的工作方式如下 代码: <script type=text/javascript src=flashobjectjs></script> <div id=flashcontent> This text is replaced by the Flash movie </div> <script type=text/javascript> var fo = new FlashObject(movieswf mymovie #); fowrite(flashcontent); </script> 简单分析一下或是你可以仔细看flashObject的文档 代码: <div id=flashcontent> This text is replaced by the Flash movie </div> 这一段相当于我们在为放置flash文件而准备的一个holder有些象我们常用的空的MovieClip holder为放入内容而准备的.如果你没有装flashplayer那么里面的那行字会显示出来如显示为This text is replaced by the Flash movie 如果你装了flashplayer那这行字是不会显示的用户基本上是看不到的同时它还有一个好处是你可以把这行内容变成的你搜索关键字google会很容易搜到它的.呵呵一举两得. 下面这段一看就知道是什么了. 代码: <script type=text/javascript> var fo = new FlashObject(movieswf mymovie #); fowrite(flashcontent); </script> 用来嵌入swf比如当前的影片文件是movieswf id是mymoive宽是高是flashplayer版本是背景色是# 下面我们来看一下我们嵌入一个flash的范例 根据上面的基本工作方式我们还要嵌入一些其它的参数来满足我们一些其它的需要比如我们有一个文件名为wsswf我们想把它嵌入到页面中又不至于受IE更新的影响 在页面中包入flashobjectjs文件 <script type=text/javascript src=flashobjectjs></script> 一般这行代码可以写在body标签之前即可 把下面这段代码加在它下方 代码: <div id=flashcontent ></div> <script type=text/javascript> var fo = new FlashObject(wsswf mymovie px #); foaddParam(quality low); foaddParam(wmode transparent); foaddParam(salign t); foaddParam(scale noscale); foaddParam(loop false); fowrite(flashcontent); </script> 从上面的代码中我们看出我们将要把FLASH放在id为flashcontent层中它的宽为高为像素那么应是和我们的swf文件的大小是相同的如果你想缩放也可以是不同的下面var fo = new FlashObject(wsswf mymovie px #); 是嵌入flash文件在之前的内容已介绍过它里面的参数其中的wsswf可以是相对路径也可以是绝对路径如你可以直接输入网站加上你的swf文件名字 再下面的一段就是我们可以加入的参数从上到下分别为quality质量wmode transparent透明salign对齐scale缩放loop循环等 这样我们的嵌入过程就完成了 如果你想使用flashVars来进行html与flash之前的通讯使用flashobject也是很容易的但有一点使用flashobjcet时只有在swf刚一载入时传递参数并且是以值对的形式来传递如下:variable=value&variable=value&variable=value 使用方法如下: 代码: <script type=text/javascript> var fo = new FlashObject(movieswf mymovie #); foaddVariable(variable value); foaddVariable(variable value); foaddVariable(variable value); fowrite(flashcontent); </script> 一旦这一步完成那么所有的变量就已经传入到flash你就可以灵活的在你的flash中的_root上使用了 deconcept flashObject还提供了可以加入其它参数的说明.你可以详细查看 除了这种简单方法之外这还有一个与之类似的我并没有仔细看如果你有兴趣可以仔细看一下.这里ufo 哈哈针对微软IE的更新改变我们已经能轻松的去掉必须要点击一下才能看的过程了.如果你有空不要忘了去微软网站上看一下它用的是什么最后不要忘了更新你网站Cheers:) |