Проблема Mozilla Firefox с использованием Javascript и Flash - PullRequest
1 голос
/ 09 апреля 2009

У меня есть скрипт, который отображает список названий песен, и когда пользователь нажимает кнопку «прослушать», имя файла передается Flash-плееру, который загружает и воспроизводит mp3. Это прекрасно работает для Safari и IE, но не для Mozilla. Кто-нибудь знает о каких-либо проблемах, связанных с Mozilla и использованием Javascript для передачи переменных во флэш-память и вызова функций во флэш-памяти.

В моем заголовочном файле -

<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.

Большое спасибо заранее за любые подсказки или рассказы о вашем собственном опыте с этим.

Стивен

Ответы [ 3 ]

3 голосов
/ 09 апреля 2009

+ 1 swfObject

Я думаю, что swfObject позволяет вам записывать Flashvars в код для встраивания, с таким же результатом, как если бы вы жестко закодировали flashvars. Я думаю, что попытка изменить жестко запрограммированные части в вашей манере будет очень похожа чтобы попытаться изменить flashvars во время выполнения, после того, как SWF уже загружен. Firefox вполне может загружать SWF, как только он попадет в HTML, не давая JavaScript возможность изменить код.

также, прочитайте ExternalInterface.addCallback , что может быть здорово, если вы сами собираете swfs.

2 голосов
/ 09 апреля 2009

При использовании javascript для взаимодействия с Flash, у меня всегда было меньше всего проблем с использованием swfObject . Это просто простая библиотека javascript, которая встраивает swf и позволяет легко общаться взад и вперед. Он также работает во всех основных браузерах.

0 голосов
/ 14 апреля 2009

Использовать swfObject . Прочитайте документацию для этого. Я уверен, что вы найдете это ветер:)

...