2010-10-15 44 views
3

我有以下SWF:如何檢查swf是否使用帶swf對象的JavaScript加載?

<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告訴我們最後一個參數是load handler。但是如果找不到文件,它將不會返回true。這是來自您提供的鏈接的引用 - 注意:如果所需的最低Flash播放器可用,並且創建SWF的Flash插件 DOM元素,則成功報告爲true。 SWFObject無法檢測swf文件請求是否實際加載。 – shabunc 2012-02-15 01:46:42

+0

這也不適用於我。 – xil3 2014-03-05 15:39:19

+1

這是一個部分解決方案。 pipwerks的答案是正確的。 – Pierre 2014-10-16 18:53:39

0

如果成功創建了DOM元素,swfobject回調函數只返回成功。它實際上並沒有說什麼關於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,然後用回調函數來輪詢SWF的PercentLoaded值。

如果該值爲0,那麼SWF尚未加載。當它達到100時,SWF將完全加載。

這是一個tutorial for polling PercentLoaded,完整的代碼示例。

+0

這是正確和完整的解決方案。即使它已經一歲多了,也應該標記爲這樣。 – Pierre 2014-10-16 18:53:13

+0

試過這個,但我得到一個「未捕獲的ReferenceError:e未定義」錯誤。 – Paolo 2014-12-15 16:22:47

+0

'e'在像這樣的'var callbackfn = function(e){if(e.success){}}'函數中定義。 – pipwerks 2014-12-18 00:22:15