mailto-copy — mailtoリンクをクリップボードにコピーするChrome拡張
概要
mailto-copyは、mailto:リンクを扱うユーザー体験を簡潔に改善する軽量なChrome拡張です。多くの場面でmailtoリンクをクリックすると外部のメールソフトやOSのハンドラが起動しますが、その挙動が望ましくない/面倒な場合があります。本拡張はリンクのクリックをキャプチャ(キャプチャフェーズでのイベントリスニング)し、デフォルトのハンドリングを防いでmailto:スキームからメールアドレスだけを抽出してクリップボードに書き込みます。余計なクエリパラメータは含めず、コピー完了は画面に小さなトーストでフィードバックします。ローカルで拡張を読み込んで試せるようREADMEに手順が記載されています。
リポジトリの統計情報
- スター数: 2
- フォーク数: 0
- ウォッチャー数: 2
- コミット数: 2
- ファイル数: 3
- メインの言語: JavaScript
主な特徴
- mailto:リンクのクリックをキャプチャフェーズで横取りして処理を制御
- mailto:のクエリパラメータを除いた純粋なメールアドレスだけをコピー
- navigator.clipboard等を使ったクリップボード書き込み(ブラウザAPI利用)
- コピー完了を示す軽量なトースト通知を表示
技術的なポイント
本拡張は非常にシンプルな構成で、主にcontent script(content.js)によって動作します。実装の肝は以下の通りです。
- イベントのキャプチャフェーズでリンクの有効化を検出:リンククリックを通常のバブリングではなくキャプチャ段階で捕捉することで、ブラウザがmailtoハンドラを起動する前に介入できるようにしています(addEventListener(‘click’, handler, true) のような手法)。
- mailto: URLのパースとクリーンアップ:イベントで取得したリンクの href から “mailto:” スキームを取り除き、”?”以降のクエリ文字列(subject=やbody=など)を削除して純粋なアドレス部分のみを抽出します。複数宛先やエンコードされた文字列がある場合はデコード処理を入れる必要がありますが、基本はシンプルに@を含む最初の部分を抜き出します。
- クリップボード操作:navigator.clipboard.writeText() を利用して抽出したメールアドレスをクリップボードに書き込みます。これにより余計なパーミッションを要求せずモダンなAPIで安全にコピーできます(ただし非HTTPSや古いブラウザでは制約がある点に注意)。
- ユーザーへのフィードバック:DOMに小さなトースト要素を挿入して一定時間後に自動で削除することで、UI上のフィードバックを提供します。スタイルは最小限に抑えられており、ページの既存スタイルに干渉しないよう工夫が必要です。
- マニフェスト設定:manifest.json により content script の適用範囲(matches)や実行タイミングが定義されています。拡張は軽量で追加ファイルやバックグラウンド処理を持たず、ページに直接スクリプトを注入して動作します。
設計上の注意点としては、mailtoがフォームの action やスクリプト経由で発火するケース、キーボード操作でのアクティベーション、複数受信者やエンコードされたアドレスの正確な処理、ブラウザ互換性(navigator.clipboard のサポート範囲)などがあります。機能拡張案として、オプションページで「クエリも含めてコピー」「コピー形式のカスタマイズ」「通知オフ」などを追加でき、より柔軟なユーティリティにできます。
プロジェクトの構成
主要なファイルとディレクトリ:
- README.md: file
- content.js: file
- manifest.json: file
まとめ
シンプルで実用的、ローカル読み込みで手軽に試せる便利な小規模拡張です(約50字)。
リポジトリ情報:
- 名前: mailto-copy
- 説明: 説明なし
- スター数: 2
- 言語: JavaScript
- URL: https://github.com/T3-Content/mailto-copy
- オーナー: T3-Content
- アバター: https://avatars.githubusercontent.com/u/218188839?v=4
READMEの抜粋:
mailto:copy
Chrome extension that intercepts mailto: links and copies the email address to the clipboard instead of opening the system email app.
Load locally
- Open
chrome://extensions. - Enable Developer mode.
- Click Load unpacked.
- Select this folder.
Behavior
- Captures
mailto:link activation in the capture phase. - Prevents the browser’s default email-client launch.
- Copies just the email address, not query params like
subject=orbody=. - Shows a small toast …