使用swfobject.js时样式及传参的问题
swfobject.js
最近需要在项目中引入swf文件。
最初的写法:
<div id="recorderDiv"> <object id="recorder" classid="clsid:d27cdb6e-ae6d-11cf-96b8444553540000"codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" align="center"> <param name="allowScriptAccess" value="sameDomain" /> <param name="movie" value="<%=basePath %>flash/Recorder.swf" /> <param name="quality" value="high" /> <param name="bgcolor" value="#ffffff" /> <param name="allowFullScreen" value="false" /> <param name="wmode" value="transparent" /> <embed src="<%=basePath %>flash/Recorder.swf" align="center" type="application/x-shockwave-flash" id="embed"> </object> </div>
由于IE只支持对Object的解析,火狐、谷歌、Safari只支持对Embed的解析,所以这种写法在版本较高的浏览器中表现的还算正常。
但在IE8下,以上写法弹窗报错:参数无效。
引入swfobject.js后的写法:
function createRecorder() { var flashvars = {}; var params = {}; var attributes = { styleclass: "recorderClass" } swfobject.embedSWF("<%=basePath %>flash/Recorder.swf" ,"recorderDiv", "320", "220", "9.0.0", "<%=basePath %>flash/Recorder.swf"
, flashvars, params, attributes);
}
这种写法,使得兼容性的问题得以解决。但却带来两个问题:
一、此前为embed标签单独写了样式,这时需要换种方式制定样式
代码如上所示,使用styleclass指定<embed/>的样式
二、在为swf传参数的时候,只能使用json,这在flex中接收比较繁琐
举例来说,当只需要传递一个参数的时候,我们可以参与如下写法:
swfobject.embedSWF("<%=basePath %>flash/Recorder.swf?msgID=" + msgID ,"recorderDiv", "320", "220", "9.0.0", "<%=basePath %>flash/Recorder.swf?msgID=" + msgID, flashvars, params, attributes);
附:从网络下载的zip文件,有时可能因为文件过大而被上传者分成多个部分上传。这样下载的文件可能是:a.zip.001、a.zip.002.
对于这样的文件,有时利用压缩软件无法正常解压缩,可以在命令行运行如下命令:
copy /b a.zip.001+a.zip.002 a.zip 这个命令将两个文件合成一个
之后解压缩a.zip即可
posted on 2014-01-15 14:26 tomspapaya 阅读(645) 评论(0) 编辑 收藏 举报