回覆列表
  • 1 # 歷歷萬世

    剛開始的時候,一直在考慮如何使用 js 來判斷某個軟體是否安裝(可以被瀏覽器呼叫的軟體)。卻一直沒有頭緒。後來在各大網站找到一些方法:

    ActiveXObjectnavigator.plugins

    但後來發現這些方法都無效,很是失望。

    最後在 github 上找到了一個外掛:Custom Protocol Detection in Browser

    使用方法參考裡面的即可。

    基於外掛原理的重構

    在外掛中有一個部分的原理是這樣的:如果本地安裝了外掛,當嘗試使用外掛開啟時,後觸發事件;如果無法開啟外掛,則什麼都不會發生。

    根據這個原理,進行一個簡單的封裝。(其實也不算是封裝,只是簡單的把其中的原理展現出來而已)

    這裡使用的是程式碼,主要是為了兼任低版本的瀏覽器,可以在理解其中的原理後,移植到相應的專案或者框架。

    原理分析

    開啟本地外掛(軟體,例如 qq)的方法基本是讓瀏覽器的 url 發生改變,一般有以下方法:

    使用標籤,並使用屬性。

    這裡使用的是第二種方法。第一種不好做攔截,第三種無論是否安裝都會開啟一個新的視窗。

    當嘗試開啟軟體時,開始監聽的事件。在指定的事件內,如果觸發了事件,說明軟體已經安裝,修改標識;否則無操作。然後當時間到期時,移除監聽,並判斷的值,如果為,則說明沒有安裝外掛,執行相應的處理函式。

  • 中秋節和大豐收的關聯?
  • 好多釣魚愛好者是晚上釣魚,為什麼?