0

各ブラウザー タブ/ウィンドウのすべてのリソース読み込み URL を記録するために、Firefox 拡張機能を開発しようとしています。何時間も検索しましたが、傍受された各 http 要求を元のタブに関連付ける方法が見つかりませんでした。これが私がこれまでに持っているものです。

Components.classes["@mozilla.org/observer-service;1"]
  .getService(Components.interfaces.nsIObserverService)
  .addObserver({
    observe: function(aSubject, aTopic, aData) {
       if ("http-on-modify-request" == aTopic) {
         var url = aSubject
              .QueryInterface(Components.interfaces.nsIHttpChannel)
              .originalURI.spec;
         alert(url);
       }
    }
}, "http-on-modify-request", false);

http リクエストの URL を取得できますが、ブラウザ ウィンドウ/タブにリンクする方法がわかりません。

MDN のドキュメントを読みましたが、言及されていませんでした。(https://developer.mozilla.org/en/XUL_School/Intercepting_Page_Loads)

助言がありますか?

4

2 に答える 2

3

Firefox だけでなく、Chrome、IE、Safari 用の拡張機能を 1 つの (javascript) コードのみで作成する場合は、Crossriderを使用することをお勧めします。

探しているものを非常に簡単に達成できます。onRequest API を使用して、すべての発信リクエストをリッスンできます。

appAPI.onRequest(function(resourceUrl, tabUrl) {
  // Where:
  //   * resourceUrl contains the URL of the requested resource
  //   * tabUrl contains the URL of the tab requesting the resource

  // Block the loading of js scripts
  if (resourceUrl.match(/.*/) {
    // Do what ever you need with the specific resource
    // For example - save it in the extension database using appAPI.db.set()
  }
});

は拡張機能の background.js に入り、すべてのページ/タブのロードされたリソースのそれぞれに対して必要なアクションを実行できるようにします。

于 2012-07-30T19:07:19.067 に答える
1

HTTPRequestのターゲットDOMWindowがほぼそこに到達することを知ることは可能ですか?に対する私の答え。リクエストに関連付けられたウィンドウが表示されますが、タブ内のフレームである可能性があります。あなたがそれを手に入れると、あなたは得ることができますwindow.top-これはブラウザタブの一番上のウィンドウになります。実際のブラウザタブ要素が必要な場合は、そのためのDOMウィンドウに関連付けられたタブの検索で私の答えを使用できます。

于 2012-07-30T09:32:11.063 に答える