Chrome允許你設定一個icon在網址列的右側,當使用者點擊icon時,會展開一個由開發者自訂內容的彈出介面,來與使用者互動。而根據使用時機的不同,有兩個類似的輸入組件分別是瀏覽器按鈕(Browser Acction) 與 頁面按鈕(Page Action)。
在眾多輸入組件中,是最直觀的UI元素,也是許多開發者的第一選擇,接下來比較看看兩者的差別,幫助你挑選適合的方案。
chrome.declarativeContent
API來指定啟動pageAction的匹配條件chrome.pageAction.show(tabId)
來啟用pageAction的iconchrome.pageAction.hide(integer tabId)
則用來關閉按鈕在chrome裡每個tab都有獨特的ID, 跟tab有關的資訊,可以用chrome.tabs相關的功能作存取,更多細節請參考:https://developer.chrome.com/extensions/tabs#type
從啟用的時機上來看,Browser-Action跟Page-Action基本是互斥的,開發者只需擇其一。
要注意在宣告上,Chrome是分為兩個不同的物件。
"browser_action" : {
"default_title" : "HelloBrowserAction",
"default_icon" : "icon.png",
"default_popup" : "popup.html"
}
"page_action" : {
"default_title" : "HelloPageAction",
"default_icon" : "icon.png",
"default_popup" : "popup.html"
}
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視窗。
{
"manifest_version": 2,
"name": "鐵人賽-Browser-Action",
"description": "就來作作第一個Browser-Action",
"version": "1.2",
"browser_action": {
"default_title": "羅拉拉的第一個擴充套件",
"default_icon": { // optional
"16": "icon.png", // optional
"24": "icon24.png", // optional
"32": "icon32.png" // optional
},
"default_popup": "popup.html"// optional
}
}
//popup.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title></title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/flat-ui/2.3.0/css/flat-ui.css">
<link rel="stylesheet" type="text/css" href="extension.css">
</head>
<body>
<div class="row demo-tiles">
<div class="col-xs-3">
<div class="tile">
<img src="https://scontent-tpe1-1.xx.fbcdn.net/v/t1.0-9/562816_461226470562299_1003308049_n.jpg?oh=036b256fa260df0b165672bc2dd0e7ff&oe=58EC4C54" alt="Compas" class="tile-image big-illustration">
<h3 class="tile-title">羅拉拉的Extension</h3>
<p>我是前端我驕傲</p>
<a class="btn btn-primary btn-large btn-block" href="https://github.com/lauraluo"><span class="fui-home"></span>羅拉拉的GitHub</a>
<script type="text/javascript" src="popup.js"></script>
</body>
</html>
彈出視窗腳本
//popup.js
document.addEventListener('DOMContentLoaded', function(dcle) {
var dButton = document.getElementById("button");
dButton.addEventListener('click', function(ce) {
//使用Chrome API開啟視窗
chrome.windows.create({ "url": "https://github.com/lauraluo" });
});
});
body {
width: 500px;//可定義視窗寬度
}
.demo-tiles {
margin: 20px;
}
程式碼範例: Github
無論是電子書或是官網中提到的範例,都顯示chrome會將 Page-Action的icon放置在網址列裡面並靠齊右邊。
書中的圖例
新版本狀況會發現兩個按鈕被統一了:請注意右上角的頁面按鈕,在一開始載入並沒有馬上啟用 (灰色),而是在我進入新的網站時才啟動按鈕(彩色),這就是新版的PageAction。