🎉
Chrome拡張 チートシート
目的
Chrome拡張は情報盗む修正が混ざりこんでることが多いとニュースで聞いて怖いから、簡単なものなら自作で対応するために作り方を調べた
参考サイト
概要
最小限必要なファイルmanifest.json
、service_worker.js
、管理画面をポップアップするならindex.html
フォルダ構成
root
> manifest.json
> service_worker.js
> index.html
manifest.json の書き方
manifest.jsonの例
manifest.json
{
"manifest_version": 3,
"name": "[拡張のショートカット名]",
"description": "[拡張の説明]",
"version": "1.0",
"action": {
"default_popup": "/index.html"
},
"background": {
"service_worker": "/service_worker.js",
"type": "module"
},
"host_permissions": ["https://google.com/*"],
"permissions": ["background", "tabs", "storage"]
}
manifest.jsonの各フィールドの説明
-
manifest_version
とりあえず3
でいい -
name
chrome拡張の名前 -
description
chrome拡張の説明 -
version
最初は0.1からでも -
action.default_popup
ポップアップ表示されるhtmlのpath -
background.service_worker
service workerとして裏で動くjsファイルのpath -
background.type
service_workerをファイル分割するならmodule
で、ファイル分割しないなら指定しなくていい -
host_permissions
chrome拡張が動作するurl
https://*/*
をしていするとhttpsで始まるURLはすべて対象になる -
permissions
使用する権限を設定する 例では バックグラウンド、タブ操作、ブラウザのストレージ操作を許可している
service_worker.js
サンプル
service_worker.js
// 別ファイルを参照する場合はimportを使用する
// import { getInterval, getIsLoading, sleep } from "./storage.js";
// サービスワーカーのインストール時に呼び出されるイベントリスナー
self.addEventListener("install", async (event) => {
console.log("install service worker");
});
// サービスワーカーが実行可能になったらloopFunc関数を呼び出す
self.addEventListener("activate", async (event) => {
await loopFunc();
});
async function loopFunc() {}
index.html
サンプル
index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>chrome拡張サンプル</title>
<style>
body {
width: 200px;
text-align: center;
}
input {
display: inline-block;
}
#interval {
width: 30px;
text-align: right;
}
</style>
</head>
<body>
<h1>設定</h1>
<form id="form">
<div>
<label for="interval">さんぷる</label>
<input id="sample" type="text" value="サンプル!" />
</div>
<button type="submit">保存!</button>
</form>
<!--
<script type="module" src="popup.js"></script>
-->
</body>
</html>
コメント
html内でjsを呼ぶ場合はtype
にmodule
を使用するとbundlerを使用せずにjsを読み込める
moduleなのでimport文が使えます
typescriptを使うなら
chromeの型を読み込むために以下を実行する
npm i -D @types/chrome
Discussion