剛開始的時候,一直在考慮如何使用 js 來判斷某個軟體是否安裝(可以被瀏覽器呼叫的軟體)。卻一直沒有頭緒。後來在各大網站找到一些方法:
但後來發現這些方法都無效,很是失望。
最後在 github 上找到了一個外掛:Custom Protocol Detection in Browser
使用方法參考裡面的即可。
基於外掛原理的重構
在外掛中有一個部分的原理是這樣的:如果本地安裝了外掛,當嘗試使用外掛開啟時,後觸發事件;如果無法開啟外掛,則什麼都不會發生。
根據這個原理,進行一個簡單的封裝。(其實也不算是封裝,只是簡單的把其中的原理展現出來而已)
這裡使用的是程式碼,主要是為了兼任低版本的瀏覽器,可以在理解其中的原理後,移植到相應的專案或者框架。
原理分析
開啟本地外掛(軟體,例如 qq)的方法基本是讓瀏覽器的 url 發生改變,一般有以下方法:
這裡使用的是第二種方法。第一種不好做攔截,第三種無論是否安裝都會開啟一個新的視窗。
當嘗試開啟軟體時,開始監聽的事件。在指定的事件內,如果觸發了事件,說明軟體已經安裝,修改標識;否則無操作。然後當時間到期時,移除監聽,並判斷的值,如果為,則說明沒有安裝外掛,執行相應的處理函式。
剛開始的時候,一直在考慮如何使用 js 來判斷某個軟體是否安裝(可以被瀏覽器呼叫的軟體)。卻一直沒有頭緒。後來在各大網站找到一些方法:
ActiveXObjectnavigator.plugins但後來發現這些方法都無效,很是失望。
最後在 github 上找到了一個外掛:Custom Protocol Detection in Browser
使用方法參考裡面的即可。
基於外掛原理的重構
在外掛中有一個部分的原理是這樣的:如果本地安裝了外掛,當嘗試使用外掛開啟時,後觸發事件;如果無法開啟外掛,則什麼都不會發生。
根據這個原理,進行一個簡單的封裝。(其實也不算是封裝,只是簡單的把其中的原理展現出來而已)
這裡使用的是程式碼,主要是為了兼任低版本的瀏覽器,可以在理解其中的原理後,移植到相應的專案或者框架。
原理分析
開啟本地外掛(軟體,例如 qq)的方法基本是讓瀏覽器的 url 發生改變,一般有以下方法:
使用標籤,並使用屬性。這裡使用的是第二種方法。第一種不好做攔截,第三種無論是否安裝都會開啟一個新的視窗。
當嘗試開啟軟體時,開始監聽的事件。在指定的事件內,如果觸發了事件,說明軟體已經安裝,修改標識;否則無操作。然後當時間到期時,移除監聽,並判斷的值,如果為,則說明沒有安裝外掛,執行相應的處理函式。