使用Javascript和Flash通信的Mozilla Firefox问题

时间:2009-04-09 13:36:51

标签: javascript flash firefox variables communication

我有一个显示歌曲名称列表的脚本,当用户点击“监听”按钮时,文件名将传递给加载并播放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传递的变量或函数调用。

非常感谢您提供有关此事的任何提示或故事。

斯蒂芬

3 个答案:

答案 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。阅读它的文档。我相信你会发现它变得轻而易举:)