Ошибка flashObject «не является функцией» только в Firefox - PullRequest
1 голос
/ 28 июля 2010

У меня есть страница с флеш-картой для отображения. Сначала я делаю отдельный вызов AJAX, чтобы получить данные диаграммы, а затем обрабатываю их в javascript и вызываю функции объекта flash следующим образом:

var flashObj = YAHOO.util.Dom.get(chartContainer);
if (!YAHOO.env.ua.ie) {
    flashObj = flashObj.getElementsByTagName("embed")[0];
}
flashObj.SetSettingOption(dataXml.xml);
flashObj.SetAndParseData(dataXml.xml);
flashObj.Draw();

Однако в Firefox я получаю сообщение об ошибке «flashObj.SetSettingOption не является функцией». Я не сталкиваюсь с этим в IE8. Это потому, что флэш-объект загружен не полностью? Но затем при последующих посещениях страницы флэш-объект должен быть кэширован, но появляется та же ошибка.

Редактировать: Также здесь часть HTML

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id="MyChart" width="760"
    height="455" codebase="http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab">
    <param name="movie" value="../flash/MyChart.swf" />
    <param name="quality" value="high" />
    <param name="bgcolor" value="#ffffff" />
    <param name="allowScriptAccess" value="sameDomain" />
    <param name="wmode" value="transparent" />
    <embed src="../flash/MyChart.swf" quality="high" bgcolor="#ffffff" width="760"
        wmode="transparent" height="455" align="middle" play="true" loop="false"
        allowscriptaccess="sameDomain" type="application/x-shockwave-flash" 
        pluginspage="http://www.adobe.com/go/getflashplayer">
    </embed>
 </object>

Заранее спасибо за любую помощь!

Ответы [ 2 ]

2 голосов
/ 28 июля 2010

Это потому, что флэш-объект загружен не полностью?

Да, это часто случается с Flash.

Но затем при последующих посещенияхстраница, объект flash должен быть кэширован, но появляется та же ошибка.

Вероятно, нет.Flash-объект должен настроить свой внешний интерфейс.Это занимает некоторое время, независимо от того, кэшируется ли сам файл .swf или нет.

Обычно это решается с помощью функции обратного вызова в ActionScript, что-то вроде

ExternalInterface.call('flashLoaded');

или аналогичное.

1 голос
/ 28 июля 2010

Попробуйте использовать «документ» вместо «flashObj», например:

if (!YAHOO.env.ua.ie) {
    flashObj = document.getElementsByTagName("embed")[0];
}

Если это не работает, вы можете попробовать использовать document.embeds ["YOUR_FLASH_OBJECT_ID_HERE"] только для Firefoxвот так:

if (!YAHOO.env.ua.ie) {
    flashObj = document.embeds.YOUR_FLASH_OBJECT_ID_HERE;
}

Взгляните на эту документацию, она может вам помочь: Ссылка на Flash Movie

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...