2014-09-05 57 views
8

我一直在我的項目中使用swfobject,以檢測最終用戶是否安裝了Flash版本。問題出在Firefox上,因爲它顯示消息:「允許運行Adobe Flash?」這是我想避免的。SwfObject - 檢測閃存沒有「允許運行...」Firefox瀏覽器

這不是向最終用戶展示替代內容,我想要的只是嘗試檢測Flash,如果未安裝Flash,則不顯示任何內容,但如果安裝了Flash,則不會顯示允許在Firefox中運行...消息。

有誰知道任何方式來防止這種情況發生與SwfObject?

注:只需通過在HTML頭中的下一行:

<script type="text/javascript" src="swfobject.js"></script> 

它觸發允許運行的消息:S

如果你想爲了有更好的替代品的SWFObject解決這個問題,這是一個很好的多用途swf處理程序工具,我都耳熟能詳。

這裏的消息的示例:

enter image description here

感謝

+1

'hasFlash = []。some.call(navigator.plugins,功能(P){回報p.name == 「的Shockwave Flash」})' – dandavis 2016-07-18 14:01:55

+3

@dandavis,爲什麼不你把它變成完整的答案?應該在什麼情況下使用你的代碼? – 2016-07-19 02:11:35

回答

3

喜歡的東西:

var flashInstalled = ((typeof navigator.plugins != "undefined" && typeof navigator.plugins["Shockwave Flash"] == "object") || (window.ActiveXObject && (new ActiveXObject("ShockwaveFlash.ShockwaveFlash")) != false)); 

不知道,如果你需要檢查所有的瀏覽器,或只是一些,所以您可能能夠刪除activeX檢查....

2

導航器mimeType代表插件對象。您可以使用它循環瀏覽並獲取瀏覽器中啓用的任何插件的詳細信息。

實施例:

調用navigator.mimeTypes將返回插件對象的數組。

供參考:如果用戶擁有然後禁用一個插件就不會出現這個數組中..

最簡單的邏輯是簡單地搜索描述爲衝擊波

var plugins = navigator.mimeTypes; 

var i; 

    for(i = 0 ; i < plugins.length ; i++){ 

      var pluginName = plugins[i].description.toLowerCase() 

      if(pluginName.indexOf('shockwave') > -1){ 

       console.log(pluginName + ' : flash in enabled') 

       break; 
      } 

    } 

糊這個腳本在任何控制檯中。

希望這有助於