Chrome 拡張機能を作って公開しよう⑤ 〜権限多すぎ問題を解決〜
投稿: 2021年8月7日 (最終更新: 2023年12月9日) • 3 分 で読了 • 1,245 語1回15分でサクッと開発。今回は「権限多すぎ問題」を解決していきます。
本連載第4回 「コピー機能の実装」のコードの一部に誤りがありました。お詫びして訂正いたします。
誤
document.getElementById("LINE").addEventListener("click", ()=>{
windowOpen("https://social-plugins.line.me/lineit/share?url=" + encodeURIComponent(tabTitle));
}, false);
正
document.getElementById("LINE").addEventListener("click", ()=>{
windowOpen("https://social-plugins.line.me/lineit/share?url=" + encodeURIComponent(tabUrl));
}, false);
では、本題に入ります。
前回まで書いてきたコードですが、まだ課題があります。
これは、Chrome の拡張機能の管理画面のスクリーンショットです。権限が、「閲覧履歴の読み取り」と、この拡張機能の機能に対して過大であることがわかります。
今回は、これを修正します。
やり方は簡単です。manifest.json
の permissions
を以下のように書き換えてください。
"permissions": ["activeTab"],
chrome://extensions
を開き、更新ボタンを押します。
「詳細」ボタンをクリックして、「権限」欄を見てください。
「この拡張機能に特別な権限は必要ありません」と表示されていれば OK です。
しかし、これだけで今日の記事が終わってしまってはあっけないので、もう一つやります。
chrome://extension
画面で拡張機能を開き、Facebook でシェアしてみてください。
エラーになります。どうやら、URL に http://
か https://
が含まれていないとリクエストを拒否する仕様になっているようです。
そこで、URL にこれらが存在するか調べる機能を実装していきます。
「Facebook のシェアボタン」〜「LINE で送るボタン」までを、<div id="sns">
で囲んでください。
popup.js
の chrome.tabs.query
の中の末尾に以下のコードを追加してください。
if(!/http\:\/\/|https\:\/\//.test(tabUrl)) {
const element = document.getElementById("sns");
element.style.marginTop = "1.5em";
element.textContent = "このページでは SNS を用いたシェア機能をご利用になれません。ご了承ください。";
}
このコードに登場する test
は、とある文字列の中に指定した文字列が含まれているかを、true
または false
で返すものです。
test
の前に検索したい文字列を正規表現で指定します。正規表現について、詳しくは説明しませんが、このコードに関わっているルールを説明します。
/
(スラッシュ)の間に書く|
は「または」という意味。/りんご|みかん/
と書いた場合、「りんご」または「みかん」が含まれているか、という意味となる/
(スラッシュ)や:
(コロン)、;
(セミコロン)が含まれている場合、これらの文字がプログラムのコマンドと誤認識されないよう、直前に \
(バッククオート)を入れる。上記のコードの場合、「http://
か https://
が含まれているか」という意味になる。
もし、http://
も https://
も含まれていない場合、先程 popup.html
に追加した<div id="sns">
の上に余白を追加し、中のテキストを変更するようになっています。
これで、SNS でシェアした際にエラーになるのを防ぐことができます。
今日は以上です!
tabs
の代わりに activeTab
を指定することで、権限が無駄に多くなることが防げる。test
を用いると、文字列を検索することができる。本日もお疲れさまでした!
次回は Web ストアに出品する予定でしたが、予定を変更してもう一つ機能を実装していきます。
また、今回扱ったコードは、こちらから見られます。
「Chrome 拡張機能を作ろう」の記事一覧
関連記事
2021年7月30日 • 3 分 で読了
Chrome 拡張機能を作って公開しよう① 〜環境構築〜
環境構築するほどのことでもないが。
2021年8月4日 • 14 分 で読了
Chrome 拡張機能を作って公開しよう④ 〜コピー機能の実装〜
1回30分でサクッと開発。要となるコピー機能の実装を行います
2021年8月3日 • 6 分 で読了
Chrome 拡張機能を作って公開しよう③ 〜形にする〜
1回15分でサクッと開発。いよいよ形にしていきます!
2021年8月2日 • 5 分 で読了
Chrome 拡張機能を作って公開しよう② 〜ポップアップの作成〜
1回15分でサクッと開発。今回はポップアップの作成。
2021年7月29日 • 2 分 で読了
Jekyll について
Jekyll について説明します。