私は、主に学習目的でChrome拡張機能を作成しています。これは、GoogleAnalyticsがインストールされている場合にGoogleAnalyticsの追跡ID(UA-xxxxxx-x)を表示します。
情報を取得するには、ページ内のコンテンツスクリプトにsendRequestを使用する必要があることを理解し、その機能を正常に実装しました
chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
// analytics request check GA and send back
if(request.requestDetail == "analytics") {
console.log(window._gaq);
console.log(window._gaq._getAsyncTracker()._getAccount());
// unknown response, send back nothing!
} else {
sendResponse({});
}
});
リスナーはリクエストを受信しています。GoogleAnalyticsはテストしているウェブページに確実にインストールされています。window._gaqとwindow._gaq._getAsyncTracker()._ getAccount()はどちらもコンソールからアクセスでき、期待どおりの結果を返します。
リスナーを介してアクセスするときにwindow._gaqが未定義なのはなぜですか?Chrome拡張機能からどのようにアクセスする必要がありますか?
これにはセキュリティ上の理由があると思いますので、マニフェストを変更して以下を含めるようにしましたが、それでも運がありません
"content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'"
二次的な質問は次のようになると思います。
私が使用している方法で可能なことを達成しようとしています(ページのコンテンツで正規表現マッチングを使用して同様の結果を得ることができましたが、オブジェクトに直接アクセスしたいと思います)