輸入組件:瀏覽器按鈕與頁面按鈕
什麼是按鈕Action
Chrome允許你設定一個icon在網址列的右側,當使用者點擊icon時,會展開一個由開發者自訂內容的彈出介面,來與使用者互動。而根據使用時機的不同,有兩個類似的輸入組件分別是瀏覽器按鈕(Browser Acction) 與 頁面按鈕(Page Action)。
在眾多輸入組件中,是最直觀的UI元素,也是許多開發者的第一選擇,接下來比較看看兩者的差別,幫助你挑選適合的方案。
按鈕(Action)能作到什麼事情
- 作為一個最容易跟使用者接觸的互動元素,是許多擴充功能開發者者的第一選擇。
- 提供預設的彈出視窗,讓開發者可以快速的打造功能UI。
- 彈出視窗不一定是必需的,也有些擴充功能選擇與內容腳本結合,在網頁中插入自己打造的UI元素,這時的按鈕僅僅只是作為一個觸發器而存在。
Browser-Action and Page-Action 的共同點
- 都可以設定彈跳視窗(非必要),
- 彈出視窗腳本可以籍由彈出視窗引入,並且使用一些Chrome的API
- 使用點擊右上角的圖示與之互動
- chrome. browserAction.onClicked
- chrome.pageAction.onClicked
Browser-Action and Page-Action 的差異點
- Browser-Action在瀏覽器開敵時便是啟用狀態
- Page-Action 必需在指定的條件符合的狀況才會啟用
- 你需要自已撰寫過瀘條件。
- 啟動頁面按鈕的方法
- 使用
chrome.declarativeContent
API來指定啟動pageAction的匹配條件 - 使用
chrome.pageAction.show(tabId)
來啟用pageAction的icon - 與之對應的
chrome.pageAction.hide(integer tabId)
則用來關閉按鈕
- 使用
- 啟動頁面按鈕的方法
在chrome裡每個tab都有獨特的ID, 跟tab有關的資訊,可以用chrome.tabs相關的功能作存取,更多細節請參考:https://developer.chrome.com/extensions/tabs#type
從啟用的時機上來看,Browser-Action跟Page-Action基本是互斥的,開發者只需擇其一。
安裝檔的宣告方式
要注意在宣告上,Chrome是分為兩個不同的物件。
|
|
|
|
有哪些方法可以用
- chrome.pageAction.setTitle( details)
- chrome.pageAction.setIcon(details,funccallback)
- chrome.pageAction.setPopup(details)
- 其他參見 broswerAction
- hrome.browserAction.setTitle(details)
- chrome.browserAction.setIcon(details,funccallback)
- chrome.browserAction.setPopup( details)
- 其他參見 pageAction
補充:browserAction中當你指定的tab關閉時,利用腳本改掉的設定會換回預設值。
動手作看看
在這裡我們先展示一段瀏覽器按鈕,頁面按鈕在下一個章節中再進行討論。我們將設定一個瀏覽器按鈕,使用者點擊後會看見一個彈出視窗。點擊視窗的按鈕,將用指定網址開啟一個新的Chrome視窗。
設定檔
|
|
HTML:個人喜好 ,在樣式上引入了CSS Framework FlatUI
|
|
彈出視窗腳本
|
|
CSS:設定了視窗寬度
|
|
運行結果
程式碼範例: Github
補充:介面顯示的版本問題
無論是電子書或是官網中提到的範例,都顯示chrome會將 Page-Action的icon放置在網址列裡面並靠齊右邊。
書中的圖例
新版本狀況會發現兩個按鈕被統一了:請注意右上角的頁面按鈕,在一開始載入並沒有馬上啟用 (灰色),而是在我進入新的網站時才啟動按鈕(彩色),這就是新版的PageAction。
小結
- 頁面按鈕以及瀏覽器按鈕,是許多開發者的優先選擇。
- 如果你的擴充功能每一頁都必需載入,請你選擇瀏覽器按鈕。
- 如果你的擴充功能,在特定的條件才需載入,請你選擇頁面按鈕。
- 在舊版本中,這兩個按鈕的長相有所分別,但在新版本的Chrome外觀已經統一。
- 彈出視窗組件不是必需的,你可以選擇頁面/瀏覽器作為你的擴充功能入口,再利用內容腳本打造自已的UI(evernote就這麼作)。
- 如果你設定了彈出視窗組件,事件腳本將接收不了按鈕的點擊事件。
- 我們的範例,簡單的示範一個瀏覽器按鈕如何實作,展示了彈出視窗腳本可以直接使用一些Chrome提供的API。
- 對工程師來說,頁面按鈕跟瀏覽器按鈕最大的不同之處,除了安裝檔中使用的關鍵字不一樣之外,還有一點最重要的,開發者需要實作啟動頁面按鈕的邏輯,我們將在下一個段落討論。
參考資料
- 完整的 pageAction 中文文件: https://crxdoc-zh.appspot.com/extensions/pageAction
- 完整的 BrowserAction 中文文件: https://crxdoc-zh.appspot.com/extensions/browserAction
- 電子書:http://www.apress.com/us/book/9781484217740