我有一个显示歌曲名称列表的脚本,当用户点击“监听”按钮时,文件名将传递给加载并播放mp3的Flash播放器。这适用于Safari和IE,但不适用于Mozilla。有没有人知道Mozilla的任何问题,并使用Javascript将变量传递给flash并在flash中调用函数。
在我的头文件中,我有 -
<script type="text/javascript">
var flash;
window.onload = function() {
if(navigator.appName.indexOf("Microsoft") != -1) {
flash = window.flashObject;
}else {
flash = window.document.flashObject;
}
}
和
function PassFlash($preview_mp3){
if(navigator.appName.indexOf("Microsoft") != -1) {
window.flashObject.SetVariable("fileToPlay", $preview_mp3);
window.flashObject.updatePlayer();
}
else {
window.document.flashObject.SetVariable("fileToPlay", $preview_mp3);
window.document.flashObject.updatePlayer();
}
然后我就这样嵌入了瑞士法郎......
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" name="flashObject" width="191" height="29" align="middle" id="flashObject">
<param name="allowScriptAccess" value="sameDomain" />
<param name="movie" value="preview.swf" />
<param name="quality" value="high" />
<param name="bgcolor" value="#ffffff" />
<embed src="preview.swf" quality="high" bgcolor="#ffffff" width="191" height="29" name="flashObject" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
</object>
swf已在所有浏览器(主要浏览器)中成功加载,但在Firefox中似乎没有接收javascript传递的变量或函数调用。
非常感谢您提供有关此事的任何提示或故事。
斯蒂芬
答案 0 :(得分:3)
+1 swfObject
我认为swfObject允许你做的是将Flashvars编写到嵌入代码中,结果与硬编码flashvars的结果相同。我认为尝试以你的方式更改硬编码部分会非常相似在swf已经加载之后尝试在运行时更改flashvars。 Firefox一旦点击html就可能正在加载swf,而不是让javascript有机会更改代码。
另外,请阅读ExternalInterface.addCallback,如果您自己编译swfs,那可能会很酷。
答案 1 :(得分:2)
使用javascript与Flash通信时,我使用swfObject的难度最小。它只是一个简单的javascript库,它将嵌入swf并使其易于来回通信。它也适用于所有主流浏览器。
答案 2 :(得分:0)
使用swfObject。阅读它的文档。我相信你会发现它变得轻而易举:)