ActiveX的解决方案
...
Bing
...
Flash
...
0
/1432
...
2 years 3 months ago
在去年也就是2005年十二月份,Microsoft宣布了Internet Explore的一些变化。其中最为明显的就是对ActiveX插件的播放形式的改变,也就是我们目前遇到的困惑:为什么Flash、QuickTime、Shockwave、Virtools等这样的播放插件的外面总是有一边框,只有当用鼠标点击一下后,才受控制?具Microsoft介绍,凡是APPLET、EMBDED、OBJECT标记的插件最后都会出现上述情况。为什么Microsoft要这样做呢?这样做可能是出于安全方面的考虑,但无论如何,又问题,就有解决方案。下面来给大家讲述一个通用的方法:
首先要明白为什么不能正常显示。上面讲了,这是因为它们在html语言里面使用了APPLET或EMEDED或OBJECT标签,而这些标签是被当作ActiveX来使用的,所以会出现需要点击一下才能正常显示的情况。大家可以看看下面的例子:只有先点击一下该Flash文件,才能操作它。(该例子是属于分形学里面的一部分,有兴趣的人可以和我交流,这个是我目前在图形学上研究的一方面)
那么如何解决这样一个问题呢?只要不让它插入到html语言里面就可以了。那么又如何可以不让它插入呢?使用Javascript来动态生成。好,下面我就给出一个通用的用来解决swf文件问题的方法。看下面的代码:
//-------------------------------LoadSWF.js-------------------------------
function LoadSWF(swfName,swfWidth,swfHeight)
{
document.write('<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width='+swfWidth+' height='+swfHeight+'>');
document.write('<param name="movie" value='+swfName+'>');
document.write('<param name="quality" value="high">');
document.write('<embed src='+swfName+'.swf" quality=high pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" width='+swfWidth+' height='+swfHeight+'></embed>');
document.write('</object>');
}
这段代码有三个参数,三个参数的意思我想读者根据名称很容易判别出来。分别是swf文件的名称、宽度和高度。那么我们在网页中该如何写呢?看下面的代码:
//--------------------------LoadSWF.html---------------------------
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=big5">
<title>::Cafe Colvia::</title>
<style type="text/css">
<!--
body {
background-color: #ECE9D8;
}
-->
</style>
<script src="LoadSWF.js" type="text/javascript"></script>
</head>
<body>
<div align="center">
<script type="text/javascript">LoadSWF("carpet.swf",550,400)</script>
</div>
</body>
</html>
应该是很容易的。前面导入js文件,后面调用在js文件里面的LoadSWF函数。具体例子可以看:LoadSWF.html。原代码下载:LoadSWF.rar
注意:在Flex2.0里面没有了这个问题。我用Flex制作的一个分形学特效,不知道有没有人关注呢?呵呵,里面生成的文件可以自动生成这方面的代码。所以不会出现上面的问题。它给出了一套完整的解决方案,有兴趣的人可以自己察看原代码。大家也可以点击下面的链接察看原代码的:Chorology.html
更多详细信息和解决方案可以参考下面的网站:
http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/overview/activating_activex.asp
http://www.adobe.com/devnet/activecontent/articles/devletter.html
http://blog.deconcept.com/swfobject/
它们考虑的更多,涉及的也更多,当然哪种方式越简单、满足的用户群越多,也就越容易让人接受。但是无论怎么样,它们所使用的原理都是一样的。