1

我有一个显示歌曲名称列表的脚本,当用户单击“收听”按钮时,文件名将传递给加载和播放 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();
  }

然后我像这样嵌入swf ...

<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 传递的变量或函数调用。

非常感谢您提供有关您自己的经验的任何提示或故事。

斯蒂芬

4

3 回答 3

3

+1 swf 对象

我认为 swfObject 允许您将 Flashvars 写入嵌入代码,其结果与硬编码 flashvars 的结果相同。我认为尝试以您的方式更改硬编码部分与尝试在 swf 已经加载后,在运行时更改 flashvars。Firefox 很可能会在访问 html 后加载 swf,而不是让 javascript 有机会更改代码。

另外,请阅读ExternalInterface.addCallback,如果您自己编译 swf,这可能会很酷。

于 2009-04-09T15:01:33.417 回答
2

在使用 javascript 与 Flash 进行通信时,我总是最容易使用swfObject。它只是一个简单的 javascript 库,它将嵌入 swf 并使来回通信变得容易。它也适用于所有主要浏览器。

于 2009-04-09T14:16:23.727 回答
0

使用swfObject。阅读它的文档。我相信你会发现它轻而易举:)

于 2009-04-14T12:13:32.330 回答