Small software programs that customize the browsing experience.
They are built on web technologies such as HTML, JavaScript, and CSS.
Extension files are zipped into a single .crx package that the user downloads and installs.
→ extensions do not depend on content from the web, unlike ordinary web apps.
3. 與頁面或伺服器互動。
1. 用JS與Chrome的功能互動
存取 Bookmarks、Cookies、History、Tabs、Windows。
替換『書簽管理頁』、『歷史記錄頁』和『新分頁』,改成自己想要的畫面或功能。(三選一)
在 Developer Tools 中增加功能。
取得或修改網頁內容(DOM)。
2. 使用Broswer提供的API
諸如:Standard JavaScript APIs、XMLHttpRequest、HTML5 等
跟一般的web APP無異。
{
"manifest_version": 2, // 通常是用最新的第二版
"name": "名稱",
"description": "描述",
"version": "1.0.0", // 本身 extension 的版本
"browser_action": {
"default_icon": "icon.png", // 顯示於右上角的 icon
"default_popup": "popup.html" // 94在描述 popup 的 html
},
"permissions": [ // 放入 Extension 可使用的權限、APIs
"activeTab",
"storage" // 可存取 storage API
],
"background": {
"scripts": ["jquery.js", "background.js"],
"persistent": false
},
"options_page": "options.html",
"chrome_url_overrides" : {
"pageToOverride": "myPage.html"
},
"content_scripts": [
{
"matches": [
"https://www.google.com.tw/*"
],
"css": [
"app.js"
],
"js": [
"execute.js"
]
}],
]
}
1. Popup
2. Option Page
3. Override Page
點擊 Icon 後的 popup 視窗
用來讓使用者設定extension的參數
可操作 Chrome 新開的 Tab
預設頁面、書籤管理頁面、瀏覽紀錄頁
(三擇一)
注意:JS 相關操作,皆需獨立寫成 JS 檔
<button
onclick="myFunction()">
Click me
</button>
Refused to execute inline event handler
html:
<button id="myButton">Click me</button>
<script src="script.js"></script>
script.js:
document.getElementById("myButton").addEventListener("click", myFunction);
function myFunction(){
console.log('asd');
}
除了event script外,大多數的腳本都不會長時間持續運作,所以在開發時,我們比較依懶event script來實作功能邏輯。
"background": {
"scripts": ["jquery.js", "background.js"],
"persistent": false // 是否持續運行,
},
操作及維護使用者載入的網頁,其他兩種 scripts 做不到。
"content_scripts": [
{
"matches": [
"https://www.google.com.tw/*"
],
"css": [
"app.js"
],
"js": [
"execute.js"
]
}]
⚠️ Web API 可存取權由大到小:
Event scripts > Popup scripts > Content scripts