Asp.net
從瀏覽器檢測是否安裝了特定應用程序
我們有一個高級網頁(ASP.NET、C#)和一個需要安裝在客戶端電腦上才能充分利用網頁的應用程序。該應用程序是一個托盤應用程序,主要有兩個任務。檢測網路伺服器上何時發生某些事件(例如,受邀參加會議,或通知即將舉行的會議)。Trayapp 的另一項任務是使用自定義協議 (trayapp://) 執行一些 ajax 呼叫回伺服器。
我們遇到的一個問題是如何確定應用程序是否安裝在本地機器上。現在使用者必須勾選一個複選框來通知網站應用程序已安裝,並且可以安全地呼叫trayapp:// url 呼叫。
有什麼方法,例如通過 JavaScript 或類似的方法來檢測我們的應用程序是否安裝在本地機器上?
該檢查需要適用於 IE、FF 和 Opera 瀏覽器。
如果您想在瀏覽器中使用 javascript 進行檢測,您可能可以使用集合“navigator.plugins”。它適用於 Firefox、Opera 和 Chrome,但不幸的是不適用於 IE。
更新:在 FF、Opera 和 Chrome 中,您可以像這樣輕鬆測試它:
if (navigator.plugins["Adobe Acrobat"]) { // do some stuff if it is installed } else { // do some other stuff if its not installed }更新 #2:如果它是 IE 中的 ActiveX 對象,您可以使用以下方法測試它是否存在:
function getActiveXObject(name){ try{ return new ActiveXObject(name); } catch(err){ return undefined; } };IE 的另一種方法類似於 JohnFx 建議的方法(我在這裡找到了它,但沒有測試過):
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Curr entVersion\Internet Settings\User Agent\Post Platform
安裝客戶端應用程序時,您可以修改瀏覽器配置以在 HTTP 請求中包含另一個請求標頭,然後讓伺服器程式碼查找該標頭,例如使用以下系統資料庫項作為受支持的 mime 類型(對於 Internet Explorer)
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\ Internet Settings\Accepted Documents我不確定 Opera 和 FF 是否使用相同的密鑰,但它們可能具有相似的配置選項,但這至少應該讓您走上正軌。