0

完全に読み込まれる前に、リソース (JavaScript ファイルや CSS ファイルなど) をブロックしたい。リソースがブロックされている場合の状態は、その内容によって異なります。実際、これを行うための解決策はありませんか?

私が知っていること: Webextensions は Chrome 拡張機能に似ているため、webRequest.onBeforeRequest リスナーもあります。リスナーはファイルをブロックすることを許可します:

function cancel(requestDetails) {
  console.log("Canceling: " + requestDetails.url);
  return {cancel: true};
}

chrome.webRequest.onBeforeRequest.addListener(
  cancel,
  {urls: ["<all_urls>"], types: ["script"]},
  ["blocking"]
);

この時点までは、すべて問題ありません。requestBody オプションもあるはずなので、ファイルの内容に基づいて決定できます。しかし、Mozilla Docは次のように述べています。

  1. Firefox は「requestBody」オプションをサポートしていません。

ああ、悪い話です。クールではありません。したがって、URL データを取得するには、非同期 XHR リクエストが必要です。

function cancel(requestDetails) {
   return {cancel: getUrlContent(requestDetails.url, function(result) {
      if(condition) { console.log(true); } else { console.log(false); }
   })};
}

// asynchron XHR request
function getUrlContent(url, callback) { [...] }

=>これは機能しません。返品{キャンセル: X}; return {cancel: doSth()};のような通常の関数を受け入れます。、ただし非同期コールバックはありません。結果をキャンセル JSON に「返す」オプションはありません。

他のスタックオーバーフローの質問では、 XPCOMの一部であるnsIContentPolicyについて読みました。
Firefox Webextension 環境でこれを使用する方法のヒント、例、または説明が見つかりませんでした。これは可能ですか?はいの場合、どのように?

両方が不可能な場合、どうすればそのような拡張を行うことができますか? 非推奨の XPCOM を Webextension なしで使用する必要がありますか?

4

1 に答える 1

1

requestBodyFirefox の次のバージョン (現在は 50 のようです) に搭載されるようです: bugzilla.mozilla.org/show_bug.cgi?id=1201979。つまり、今週 49 がリリースされたので、おそらくベータ版でテストできるでしょう。

于 2016-09-22T20:12:24.073 に答える