2010-10-15 3 views
3

У меня есть следующие швейцарские франки:Как проверить, загружен ли swf с использованием JavaScript с swfobject?

<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 еще не загружен, есть ли способ сделать это? Благодарю.

ответ

-6

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

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(); 
    } 
); 
+2

проголосовали - похоже, это не всегда так. Поскольку да, docs сообщает нам, что последний параметр - обработчик нагрузки. Но он не вернется, если файл не найден. Это цитата из ссылки, которую вы указали. ПРИМЕЧАНИЕ. Успех - это отчет как истинный, если требуется минимальный необходимый Flash-плеер, и что создается модуль DOM для Flash SWF-файла для SWF. SWFObject не может определить, действительно ли загружен запрос файла swf или нет. – shabunc

+0

Это тоже не сработало. – xil3

+1

Это частичное решение. Ответ Pipwerks - это правильный onw. – Pierre

0

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

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

NOTE: success is report as true if the minimum Flash player required is available and that the Flash plugin-in DOM element for the SWF was created. SWFObject cannot detect if the swf file request has actually loaded or not.

9

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

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

Вот tutorial for polling PercentLoaded, в комплекте с примерами кода.

+0

Это правильное и полное решение. Даже если ему больше года, он должен быть отмечен как таковой. – Pierre

+0

Пробовал это, но я получаю сообщение об ошибке «Uncaught ReferenceError: e is not defined». – Paolo

+0

'e' определяется в функции, подобной этой переменной: var callbackfn = function (e) {if (e.success) {}}'. – pipwerks

 Смежные вопросы

  • Нет связанных вопросов^_^