8

content_scripts がページ上で実行されたという印象を受けましたが、現在はサンドボックス化が行われているようです。

サイトのすべての XHR トラフィックをログに記録する拡張機能に取り組んでいます (デバッグやその他の開発目的で)。コンソールでは、次のスニフ コードが機能します。

 var o = window.XMLHttpRequest.prototype.open;
 window.XMLHttpRequest.prototype.open = function(){
     console.log(arguments, 'open');
     return o.apply(this, arguments);
 };
 console.log('myopen');
 console.log(window, window.XMLHttpRequest, window.XMLHttpRequest.prototype, o, window.XMLHttpRequest.prototype.open);

これにより、XHR が送信されるたびにメッセージがログに記録されます。ただし、これを拡張機能に入れると、実際のプロトタイプは変更されません。どうやら私のスクリプトが見ている window.XMLHttpRequest.prototype は、実際のページのものとは異なります。

これを回避する方法はありますか?また、このサンドボックスの動作はどこかに文書化されていますか? あたりを見回しましたが、何も見つかりませんでした。

4

2 に答える 2

8

それをしてはいけない。ドキュメントによると:

ただし、コンテンツ スクリプトにはいくつかの制限があります。彼らがすることはできません:

  • chrome.* API を使用する (chrome.extension の一部を除く)
  • 拡張機能のページで定義された変数または関数を使用する
  • Web ページまたは他のコンテンツ スクリプトによって定義された変数または関数を使用する
  • クロスサイト XMLHttpRequest を作成する
于 2010-04-18T22:02:15.360 に答える