例として、私の拡張機能がページをオーバーライドしnewtab
、ユーザーが別の拡張機能をインストールしてページをオーバーライドする場合が挙げられnewtab
ます。現在、newtab
表示される拡張機能は 1 つだけで、通常は私のものではありません。
このような競合が発生したことを検出し、ユーザーに通知するにはどうすればよいですか?
管理 APIは、拡張機能がページを上書きするかどうかを教えてくれないので、残念ながらそれを使用することはできません。
例として、私の拡張機能がページをオーバーライドしnewtab
、ユーザーが別の拡張機能をインストールしてページをオーバーライドする場合が挙げられnewtab
ます。現在、newtab
表示される拡張機能は 1 つだけで、通常は私のものではありません。
このような競合が発生したことを検出し、ユーザーに通知するにはどうすればよいですか?
管理 APIは、拡張機能がページを上書きするかどうかを教えてくれないので、残念ながらそれを使用することはできません。
これは、API の既存の機能ではないようです。http://crbug.comでバグを開くことをお勧めします。
それに失敗すると、次の厄介なハックを実行できます(私はテストしていません):
新しいタブ ページがロードされるたびに、バックグラウンド ページにメッセージを送信するようにします。
chrome.webNavigation.onBeforeNavigate
を扱うイベントをリッスンしchrome://newtab
ます。
chrome.webNavigation.onBeforeNavigate.addListener(function(details) {
/* send message */
}, { url: [{ urlEquals: 'chrome://newtab/' }] });
webNavigation
ブラウザchrome://newtab
が読み込まれるのを確認しても、その後すぐにバックグラウンド ページにメッセージが表示されない場合は、新しいタブ ページが使用されていない可能性があります。そこから、通知を送信したり、別のタブ/ウィンドウを開いて通知を表示したりできます。
残念ながら、これにはwebNavigation
パーミッションが必要です。これは、拡張機能がパーミッションを必要としない場合は残念なことです。それが運ぶ警告 (「この拡張機能はあなたのタブやブラウジング活動にアクセスできます」) は、特にユーザーにとって明白な理由がない場合、一部の潜在的なユーザーを怖がらせる可能性があります. (繰り返しになりますが、ユーザーのセキュリティに対する意識について、私は楽観的すぎるかもしれません。) 拡張機能が現在tabs
API を使用している場合は、いずれにせよ、既にこの通知が含まれています。