2011-04-12 76 views
5

有沒有辦法檢查用戶是否安裝了PDF閱讀器? 也許與一個ActiveX組件?Webbrowser,檢測是否安裝了PDF閱讀器?

你能幫我嗎?

+4

仔細考慮一下*爲什麼*要檢測這個以及你想要完成什麼。人們可以在沒有安裝插件的情況下閱讀PDF文件。 – 2011-04-12 19:54:51

回答

3

您可以使用window.navigator.plugins 檢測安裝的插件這將返回一個包含已安裝插件詳細信息的數組,但這不適用於Internet Explorer。運行此代碼時,IE只返回頁面中帶有嵌入標籤的數組。感謝IE瀏覽器,有用嗎?

好吧,讓我們試着解決這個問題。以下功能應該適用於所有主流瀏覽器。

 
function hasPlugin(name) { 
    name = name.toLowerCase(); 
    var plugins = window.navigator.plugins; 
    for (var i=0, len = plugins.length; i -1) { 
      return true; 
     } 
    } 
    return false; 
} 

,你可以調用這個函數,並檢查這樣

 
hasPlugin('Flash'); 
hasPlugin('QuickTime'); 

對於IE插件的狀態,我們應該試試這個

 
function hasPlugin(name) { 
    try { 
     new ActiveXObject(name); 
     return true; 
    } catch (e) { 
     return false; 
    } 
} 

,你可以調用這個函數,並檢查插件狀態對於IE

 
hasPlugin('ShockwaveFlash.ShockwaveFlash'); 

你可以使這個函數聲明跨瀏覽器這樣的

 
var hasPlugin; 
if (navigator.userAgent.indexOf('MSIE')) { 
    hasPlugin = function(name) { 
     try { 
      new ActiveXObject(name); 
      return true; 
     } catch (e) { 
      return false; 
     } 
    } 
} 
else { 
    hasPlugin = function(name) { 
     name = name.toLowerCase(); 
     var plugins = window.navigator.plugins; 
     for (var i=0, len = plugins.length; i -1) { 
       return true; 
      } 
     } 
     return false; 
    } 
} 

然後,你可以調用一個跨瀏覽器方式的功能。我很抱歉,我沒有爲我的瀏覽器安裝任何PDF插件--Firefox,Chrome或IE-,所以我可以告訴你確切的名字,我們應該通過hasPlugin函數的參數。

我希望這可以幫到你。順便說一句,我沒有在瀏覽器中嘗試過這些代碼,這是對我的一種專業知識。但我想這會幫助你-hope- :-)

+1

這個答案可以是正確答案嗎?無論如何函數hasPlugin都會返回true。 – 2014-09-17 09:41:28

+1

必須有StackOverflow正在吃掉的拼寫錯誤或語法錯誤。 – 2015-05-14 23:57:20

4

不,我不這麼認爲 - 但您可以隨時通過Google的PDF閱讀器直接鏈接您的鏈接 - 這將適用於所有人。

http://docs.google.com/viewer

請注意,這將通過谷歌的服務器渠道的PDF文件,所以你將失去安全性的元素。

+0

請仔細考慮數據保護。如果您的用戶已將文檔上傳到您的網站,他們是否知道Google正在處理該文檔(因此可能還存儲了該文檔)? – freefaller 2014-11-08 12:05:12

+0

這是一個很好的觀點@freefaller - 我將它添加到幫助他人理解這一點的答案中。 – 2014-11-19 12:20:18