構築中の拡張機能の $0 (chrome 開発者ツールで最後に選択された要素) にアクセスしようとしています。
そうする方法はありますか?
詳細: 拡張機能はページ アクション拡張機能です。いくつかの機能があり、現在選択されているオブジェクト ($0) について問い合わせるオプションが必要です。
ページ拡張機能として保持することはできますか、それとも開発者ツールのプラグインの方法を使用する必要がありますか?
構築中の拡張機能の $0 (chrome 開発者ツールで最後に選択された要素) にアクセスしようとしています。
そうする方法はありますか?
詳細: 拡張機能はページ アクション拡張機能です。いくつかの機能があり、現在選択されているオブジェクト ($0) について問い合わせるオプションが必要です。
ページ拡張機能として保持することはできますか、それとも開発者ツールのプラグインの方法を使用する必要がありますか?
$0
開発者ツールがまだアクティブな場合にのみ意味があります。の結果を取得する唯一の方法$0
は、devtools ページを使用することです。
devtools ページは、メッセージ パッシング APIを使用して、拡張機能の残りの部分と通信できます。通常の状況では、開発ツールの状態 (開いている/閉じている) は認識されており、(ページ アクション) ポップアップの存続期間中は修正されています。ポップアップが検査されていない限り、ポップアップが開いている間は開発ツールを切り替えることはできません。
したがって、devtools ページはレシーバーchrome.runtime.onMessage
またはchrome.runtime.onConnect
である必要があり、ポップアップはセンダーchrome.riuntime.sendMessage
またはchrome.runtime.connect
である必要があります。
開発ツール ページ内では、次を使用して、最後に検査した要素を簡単に操作できますchrome.devtools.inspectedWindow.eval
。
// E.g. Test if the currently inspected element is the main <body> element
chrome.devtools.inspectedWindow.eval('$0 === document.body', function(result) {
alert('$0 is ' + (result ? '' : 'not ') + '<body>');
});
最後の式の結果がコールバックに返されます。この値はシリアライズ可能でなければならないため、DOM 要素自体を「返す」ことはできません。したがって、DOM 要素に直接アクセスすることはできません。検査対象の要素との対話は、devtools API を介して行う必要があります。