Как проверить, загружен ли SWF с помощью JavaScript вместе с swfobject? - PullRequest
3 голосов
/ 15 октября 2010

У меня есть следующий swf:

    <head>
    # load js
    <script>
    function graph() {
     swfobject.embedSWF(
     "open-flash-chart.swf", "chart", "400", "180", "9.0.0", "expressInstall.swf",
     {"data-file":"{% url monitor-graph %}"});
        };
    </script></head>

<div id="chart"> </div>
<script>
graph();
</script>

Я хотел бы вызвать функцию графика только в том случае, если swf еще не был загружен, есть ли способ сделать это?Спасибо.

Ответы [ 3 ]

10 голосов
/ 18 апреля 2013

Используйте SWFObject для встраивания SWF, затем используйте функцию обратного вызова для опроса значения SWF PercentLoaded.

Если значение равно 0, SWF еще не загружен.Когда он достигает 100, SWF полностью загружается.

Вот учебник для опроса PercentLoaded, дополненный примерами кода.

0 голосов
/ 17 апреля 2013

Обратный вызов swfobject возвращает успех, только если элемент DOM был успешно создан. На самом деле ничего не говорится о том, загружен SWF или нет.

Из документации swfobject:

ПРИМЕЧАНИЕ: успех указывается как истинный, если доступен минимальный требуемый проигрыватель Flash Player и создан DOM-элемент Flash-плагина для SWF. SWFObject не может определить, действительно ли загружен запрос файла SWF.

0 голосов
/ 15 октября 2010

Последний аргумент embedSWF - это функция обратного вызова, которая вызывается, когда SWF-файл внедрен. Он принимает объект события с парой свойств, обозначающих успех / неудачу и т. Д. Подробнее об этом в документации swfobject .

swfobject.embedSWF(
 "open-flash-chart.swf", "chart", "400", "180", "9.0.0", "expressInstall.swf",
 {"data-file":"{% url monitor-graph %}"}, {}, {}, 
   function(e) {
     if(e.success) graph();
   }
 );
...