カエルの人 logo
  • About 
  • Works 
  • Blog 
  • Tags 
  • Privacy 
  • Contact 

  •  Language   
    • 日本語
    • English
  •    テーマ切り替え
    •   ライト
    •   ダーク
    •   自動
  •  
    •   ライト
    •   ダーク
    •   自動
  1. ホーム
  2. ブログ
  3. Chrome 拡張機能を作って公開しよう⑤ 〜権限多すぎ問題を解決〜

Chrome 拡張機能を作って公開しよう⑤ 〜権限多すぎ問題を解決〜

投稿: 2021年8月7日  (最終更新: 2023年12月9日) • 3 分 で読了 • 1,245 語
プログラミング
 
Chrome拡張機能
 
JSON
 
JavaScript
 
プログラミング
 
Chrome拡張機能
 
JSON
 
JavaScript
 
共有:
カエルの人
リンク をクリップボードにコピーしました

1回15分でサクッと開発。今回は「権限多すぎ問題」を解決していきます。

目次
 

  • お詫びと訂正
  • 権限を少なくする
  • 不具合を修正する
    • HTML の修正
    • JavaScript の修正
  • まとめ

Chrome 拡張機能を作って公開しよう⑤ 〜権限多すぎ問題を解決〜
Photo by Sigmund  on Unsplash 

お詫びと訂正  

本連載第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 にこれらが存在するか調べる機能を実装していきます。

HTML の修正  

「Facebook のシェアボタン」〜「LINE で送るボタン」までを、<div id="sns">で囲んでください。

JavaScript の修正  

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 の前に検索したい文字列を正規表現で指定します。正規表現について、詳しくは説明しませんが、このコードに関わっているルールを説明します。

  1. 正規表現は2つの / (スラッシュ)の間に書く
  2. | は「または」という意味。/りんご|みかん/ と書いた場合、「りんご」または「みかん」が含まれているか、という意味となる
  3. 正規表現の中に登場する /(スラッシュ)や:(コロン)、;(セミコロン)が含まれている場合、これらの文字がプログラムのコマンドと誤認識されないよう、直前に \(バッククオート)を入れる。

上記のコードの場合、「http:// か https:// が含まれているか」という意味になる。

もし、http:// も https:// も含まれていない場合、先程 popup.html に追加した<div id="sns"> の上に余白を追加し、中のテキストを変更するようになっています。

これで、SNS でシェアした際にエラーになるのを防ぐことができます。

今日は以上です!

まとめ  

  • tabs の代わりに activeTab を指定することで、権限が無駄に多くなることが防げる。
  • test を用いると、文字列を検索することができる。

本日もお疲れさまでした!

次回は Web ストアに出品する予定でしたが、予定を変更してもう一つ機能を実装していきます。

また、今回扱ったコードは、こちらから見られます。

「Chrome 拡張機能を作ろう」の記事一覧

  1. 環境構築
  2. ポップアップ作成
  3. 仕様に沿って開発
  4. コピー機能実装
  5. 権限を減らす(閲覧中)
  6. コンテキストメニューの作成
  7. Webストアに公開
 Chrome 拡張機能を作って公開しよう⑥ 〜コンテキストメニューを作る〜
Chrome 拡張機能を作って公開しよう④ 〜コピー機能の実装〜 

関連記事

Chrome 拡張機能を作って公開しよう① 〜環境構築〜

2021年7月30日 • 3 分 で読了

Chrome 拡張機能を作って公開しよう① 〜環境構築〜

環境構築するほどのことでもないが。

Chrome 拡張機能を作って公開しよう④ 〜コピー機能の実装〜

2021年8月4日 • 14 分 で読了

Chrome 拡張機能を作って公開しよう④ 〜コピー機能の実装〜

1回30分でサクッと開発。要となるコピー機能の実装を行います

Chrome 拡張機能を作って公開しよう③ 〜形にする〜

2021年8月3日 • 6 分 で読了

Chrome 拡張機能を作って公開しよう③ 〜形にする〜

1回15分でサクッと開発。いよいよ形にしていきます!

Chrome 拡張機能を作って公開しよう② 〜ポップアップの作成〜

2021年8月2日 • 5 分 で読了

Chrome 拡張機能を作って公開しよう② 〜ポップアップの作成〜

1回15分でサクッと開発。今回はポップアップの作成。

Jekyll について

2021年7月29日 • 2 分 で読了

Jekyll について

Jekyll について説明します。

目次
  • お詫びと訂正
  • 権限を少なくする
  • 不具合を修正する
    • HTML の修正
    • JavaScript の修正
  • まとめ
Copyright © 2024 カエルの人 All rights reserved. Powered by Hinode  .
カエルの人
コード をクリップボードにコピーしました