2011-10-28 63 views
3

有沒有一種方法(在JavaScript中)來檢測以下兩種情況?Flash支持與閃存安裝

  1. 設備支持Flash,但未安裝Flash。
  2. 設備不支持Flash(即:的iPad,iPhone)

我知道如何在已安裝的Flash檢測,我知道如何檢測的iPad或iPhone特別,但想找到一種方法一般地檢測設備是否支持Flash,而不使用任何類型的白名單或黑名單。

回答

4

您可以檢測是否安裝了閃光燈。 Adobe爲此提供了Javascript代碼。

您無法檢測到閃存是否受支持(例如可用),但未安裝。根據定義,根據定義,如果未安裝閃存,則設備上不會顯示任何有關是否安裝閃存的信息。您可以看到爲什麼會這樣,因爲設備可能在沒有閃光燈並且沒有閃光燈的情況下在今天發貨,然後閃光燈可能會在以後不用更改設備本身。因此,設備本身不可能知道閃存已經可用。

知道閃存是否可用的唯一方法是維護您自己的巨型設備列表。由於它不斷變化,你甚至不能把它燒成你的javascript。你必須把它放在服務器上並通過ajax獲取信息。

快捷鍵(它聽起來像你已經想過的)是檢測是否安裝了閃存,如果不是,請查看該設備是否是少量高容量設備之一(Android,iDevice,Windows Phone,Windows平板電腦等),並使用預先建立的知識來判斷這些設備是否有可用的閃存。對於其他設備,你只是不知道。

0

你最好的選擇將是存儲支持的用戶代理的映射數組,然後使用一個getSupported()方法符合對你支持的用戶代理的列表中的用戶代理,以及那些AREN」噸。

0

不,您是否安裝了閃存,但在理論上無法知道該設備是否支持閃存。

畢竟,地獄可能會結冰,Apple可能會發布適用於iOS的Flash。或者,也許用戶在某些沒有Flash播放器的Itanium上運行一些奇怪的Android版本或Firefox。你將不得不保持所有可用的Flash播放器的列表,這是乏味的。

0

可能有點晚了這裏,但這個小片段有助於檢查Flash都可:

function is_flash_support() { 
    var flash_support = false; 
    try { 
     var fo = new ActiveXObject('ShockwaveFlash.ShockwaveFlash'); 
     if(fo) { 
      flash_support = true; 
     } 
    } catch (e) { 
     if(navigator.mimeTypes && navigator.mimeTypes['application/x-shockwave-flash'] != undefined && navigator.mimeTypes['application/x-shockwave-flash'].enabledPlugin) { 
      flash_support = true; 
     } 
    } 
    return flash_support; 
}