0

構築中の拡張機能の $0 (chrome 開発者ツールで最後に選択された要素) にアクセスしようとしています。

そうする方法はありますか?

詳細: 拡張機能はページ アクション拡張機能です。いくつかの機能があり、現在選択されているオブジェクト ($0) について問い合わせるオプションが必要です。

ページ拡張機能として保持することはできますか、それとも開発者ツールのプラグインの方法を使用する必要がありますか?

4

1 に答える 1

4

$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 を介して行う必要があります。

于 2014-01-10T10:28:20.240 に答える