完全に読み込まれる前に、リソース (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は次のように述べています。
- 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 なしで使用する必要がありますか?