【該博客是拼接他人的,原因我們這邊PC的開發人員問我,有沒有關於js某個對象直接能檢測手機或者電腦的自定義協議的,我上網搜了下,貌似移動端的解決比較多】
最終解決方案:還是需要github上面大神寫的方法:protocolcheck
https://www.lefer.cn/posts/34578/
之前在《自定義通用URL協議實現在瀏覽器中打開本機任意程序》介紹了通過自定義協議使的瀏覽器可以調起客戶端本地程序的方法,在企業環境的實際應用中,又面臨着如何檢測自定義的協議是否存在的問題,ie下可以通過activex檢測注冊表項,chrome該怎么辦呢?有沒有通用的解決辦法呢?答案是肯定的,甚至有人已經將該功能封裝成了通用JS。具體如下。
-
訪問 github,下載 protocolcheck.js 。引用該js后,即可使用以下代碼檢測
window.protocolCheck(href,callback)
示例代碼
-
example.html
。ff
協議是自定義通用URL協議實現在瀏覽器中打開本機任意程序文中示例的協議。你可以替換成任意存在的協議。
<!DOCTYPE html> <html> <head lang="zh"> <meta charset="UTF-8"> <title>自定義協議探測</title> </head> <body> <h1>Click one of these labels:</h1> <div href="unexists:randomstuff">一個不存在的協議</div> <div href="ff://C:/Windows/System32/notepad.exe">一個存在的協議</div> <script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script> <script src="protocolcheck.js"></script> <script src="example.js"></script> </body> </html>
exampe.js
-
$(function () { $("div[href]").click(function (event) { window.protocolCheck($(this).attr("href"), function () { alert("協議未注冊"); }); event.preventDefault ? event.preventDefault() : event.returnValue = false; }); });
運行效果
-
點擊第一個
a
標簽時,提示協議未注冊,點擊第二個a
標簽時,正常打開了記事本程序。 -
END