2010-07-25 105 views
7

有沒有什麼辦法通過javascript檢測主要瀏覽器(firefox,即chrome,safari和opera)中的flash-plugin崩潰?檢測FLASH插件崩潰

+0

好奇,你試圖完成與檢測。 – Codex73 2010-07-25 15:46:59

+0

他可能想刷新頁面? – 2010-09-08 23:13:05

回答

0

也許你可以在你的as3文件中使用一個保持活動的腳本來與頁面js進行對話,如果js沒有接到幾秒鐘的呼叫,你可以讓它超時並將其作爲閃存崩潰來處理。

8

我不確定這是否有效。您可以定期獲取對Flash對象的引用,並檢查它是否具有SetVariable方法。

function checkFlashCrashed() { 
    try { 
     var tmp = document.getElementById("flashObjectId").SetVariable; 
     if(!tmp) { 
     alert("Flash crashed"); 
     return; 
     } 
    } catch (e) { 
     alert("Flash crashed"); 
     return; 
    } 
    setTimeout(checkFlashCrashed, 1000); // check it out every one second 
} 

SetVariable是一個可以從Javascript代碼調用的接口函數。如果閃存崩潰,它的接口也會崩潰。因此,這可能是一個解決方案。

+0

不起作用... – Nabab 2012-09-10 08:46:51

+0

+1。它像Chrome 23.0.12.71中的魅力一樣。可悲的是,OP是一個新手/巨魔。 – 2012-11-19 23:38:17

+0

這似乎是一個有效和正確的答案,但OP仍然不在乎:)。 – Zafer 2017-11-27 14:06:24

1

在ActionScript中使用全局異常處理來調用UncaughtErrorEvent.UNCAUGHT_ERROR上的外部接口。

當Flash Player運行時發生錯誤時,它可能會捕獲異常併發出JavaScript信號。

+1

是的,但是如果你沒有訪問你的播放器代碼的情況呢?例如:youtube播放器在頁面上崩潰,如何檢測? – Skay 2011-07-19 09:02:46

0

這取決於您對誤報的感受。

如果閃存似乎仍在工作,您可以有一個看門狗,它會發出「閃存沒有崩潰」的ajax調用。並且假設如果沒有寫入,閃存已經崩潰。如果用戶在檢查前關閉了頁面,則會產生誤報。

如果閃光燈似乎不工作,您可以有一個看a狗打電話「閃光燈已經墜毀」的看門狗。這將會導致崩潰,比如崩潰,會導致整個瀏覽器崩潰。

也許你可以同時擁有兩個看門狗,這樣你可以更好地瞭解發生了什麼事情。