# chrome拡張でウェブページの背景を黒くする ## はじめに この記事は、[茨大 Advent Calendar 2020](https://adventar.org/calendars/5043) 8日目の記事です。 茨城大学で情報工学専攻2年やってます。 暗い部屋で作業すると背景白のページがきついです。 chrome拡張で黒くしましょう。 全8工程で、工程6のfaviconだけちょっと面倒です。 他はほぼコピペ作業。 ### 1.作業ディレクトリ(作業ルート)を作成する。 名前は任意。2バイト文字とかやめた方が無難。 => root ### 2.Chrome拡張として認識させる。 => root/manifest.json ```json= { "name": "change color", "version": "0.1", "description": "change background color in certain page.", "manifest_version": 2 } ``` ### 3.ユーザに見せる画面を作る。 => root/popup.html ```html= <!DOCTYPE html> <html> <head> <style> button { height: 30px; width: 30px; outline: none; } </style> </head> <body> <button id="changeColor"></button> <script src="popup.js"></script> </body> </html> ``` なんかボタンがありそう。。。 ### 4.ボタンを動かすファイルを作る。 => root/popup.js ```javascript= let changeColor = document.getElementById('changeColor'); chrome.storage.sync.get('color', function(data) { changeColor.style.backgroundColor = data.color; changeColor.setAttribute('value', data.color); }); ``` ### 5.Chrome拡張として暗躍するファイルを作る。 => root/background.js を作成。 ```javascript= chrome.runtime.onInstalled.addListener(function(){ chrome.storage.sync.set({color: '#000000'}, function(){ console.log("The color is black."); }); chrome.declarativeContent.onPageChanged.removeRules(undefined, function(){ chrome.declarativeContent.onPageChanged.addRules([{ conditions: [new chrome.declarativeContent.PageStateMatcher({ pageUrl: {hostEquals: "hackmd.io"}, }) ], actions: [new chrome.declarativeContent.ShowPageAction()] }]); }); }); ``` ### 6.拡張用アイコンを準備する。 分かる人は自作して下さい。とりあえず、簡易作成例として以下。 https://favicon.io/ ここで TEXT => ICO を選んで、適当に作って、Download。 今回はzip内のfavicon-16x16.png だけ使います。 root/favicon-16x16.png ### 6.1.状況整理 もう新しいものはいりません。 現在 ``` root ├── background.js ├── favicon-16x16.png ├── manifest.json ├── popup.html └── popup.js ``` ### 7.増えたファイルなどなどをmanifest.jsonに追記する。 工程2に追記してます。よくわからない方は全部コピペし直すのが吉。 root/manifest.json ```json= { "name": "change color", "version": "0.1", "description": "change background color in certain page.", "manifest_version": 2, "page_action": { "default_popup": "popup.html", "default_icon": { "16": "favicon-16x16.png" } }, "background": { "scripts": ["background.js"], "persistent": false }, "icons": { "16": "favicon-16x16.png" } } ``` ### 8.chromeで使う。 8.1.chromeのアドレスバーに以下をコピペし、拡張のメニューを出す。 `chrome://extensions` 8.2.右上のディベロッパーモードをオン。 8.3.以下赤丸から作ったファイル群の入っているrootディレクトリを読み込ませる。 ![](https://i.imgur.com/uzzq5S4.png) 8.4.このページ内で拡張機能の黒いボタンを押す。 以上です。 ## おわりに background.jsをいじれば色や対象サイトを変えられます。 問題があったらこのサイトを参考にしてるので、そちらを当たって下さい。 <a href="https://developer.chrome.com/extensions/getstarted">Getting Started Tutorial - Google Chrome</a> オプションページ等、ここより詳細です。 最低限なので、今回のようにセキュリティに関わらない機能で使ってください。