HTML5 協(xié)議處理: Web-based Protocol Handlers
說明
獲取資源,是利用Web最重要的功能之一抖部,但隨著現(xiàn)代也有越來越多的應(yīng)用改用Web設(shè)計(jì)王浴,而這些應(yīng)用中,是有不少原本可以處理其他協(xié)議的(例如郵箱應(yīng)用可以處理mailto:
協(xié)議)哮独,如果通過處理其他協(xié)議铸史,需要手動(dòng)復(fù)制粘貼或者需要先手動(dòng)轉(zhuǎn)成http(s):
協(xié)議鼻疮,顯然是不方便的。為了解決這個(gè)問題琳轿,HTML5引入了“Web-based Protocol Handlers”判沟,以便于直接點(diǎn)擊其他協(xié)議的鏈接就可以直接用Web應(yīng)用打開并處理。
語法
Web-based Protocol Handlers 只提供了一個(gè)方法崭篡。
注冊
使用registerProtocolHandler
方法用來注冊處理程序挪哄,此方法擴(kuò)展了navigator
對象,具體語法如下:
navigator.registerProtocolHandler(protocol, url, title);
當(dāng)一個(gè)瀏覽器執(zhí)行這段代碼時(shí),它應(yīng)該向用戶顯示一個(gè)請求,讓用戶許可為處理這個(gè)協(xié)議而注冊一個(gè)web應(yīng)用程序的請求琉闪。
參數(shù)
protocol
: 站點(diǎn)希望處理的協(xié)議迹炼,指定為字符串。例如,您可以注冊處理SMS文本消息鏈接斯入,通過注冊來處理“短信”方案砂碉。
注意 協(xié)議必須屬于白名單內(nèi)的協(xié)議,或者以
web+
開頭的協(xié)議刻两。
協(xié)議白名單 bitcoin geo im irc ircs magnet mailto mms news nntp sip sms smsto ssh tel urn webcal wtai xmpp
url
: 處理程序的URL增蹭,作為字符串。此字符串應(yīng)包含“%s”作為占位符磅摹,將替換為要處理的文檔的轉(zhuǎn)義URL滋迈。此URL可能是真實(shí)的URL,也可能是電話號碼户誓,電子郵件地址等饼灿。
注意 url參數(shù)必須為代碼執(zhí)行頁面的同源url, 可以使相對url, 也可以是絕對url。
title
: 在界面展示給的用戶的協(xié)議處理程序標(biāo)題帝美。
可能的錯(cuò)誤
SecurityError
: 用戶代理阻止了協(xié)議處理程序的注冊碍彭。如果指定了無效協(xié)議(例如“http”),則可能會(huì)發(fā)生這種情況悼潭,出于明顯的安全原因無法注冊硕旗。
SyntaxError
: 指定的協(xié)議處理程序URL中缺少“%s”字符串。
激活
當(dāng)協(xié)議被注冊后女责,只要用戶點(diǎn)擊使用對應(yīng)協(xié)議的鏈接,瀏覽器將跳轉(zhuǎn)到對應(yīng)的web應(yīng)用程序注冊時(shí)提供的URL创译。
例如點(diǎn)擊一下鏈接抵知,就會(huì)打開用于處理mailto:
協(xié)議的Web應(yīng)用,除非此協(xié)議未被注冊软族,則會(huì)打開操作系統(tǒng)的處理應(yīng)用刷喜。
<a href="mailto:webmaster@example.com">Web Master</a>
處理
當(dāng)用戶要打開對應(yīng)協(xié)議時(shí),瀏覽器會(huì)自動(dòng)跳轉(zhuǎn)到對應(yīng)的URL立砸,例如mailto:
注冊到https://www.example.com/?url=%s
掖疮,則點(diǎn)擊上面的鏈接就會(huì)打開https://www.example.com/?url=mailto%3Awebmaster%40example.com
,然后就可以直接使用服務(wù)器或者JavaScript處理颗祝。