リソースが完全にロードされる前に、リソース(JavaScriptやCSSファイルなど)をブロックする必要があります。リソースがブロックされた場合の条件は、その内容によって異なります。実際には、これを行うための解決策はありませんか?WebExtensionsにロードされる前のコンテンツに基づいてリソースをブロックする方法はありますか?
私の知るところ: Web拡張機能は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) { [...] }
=>これは動作しません。 return {キャンセル:X};は通常の機能を受け入れます。return {cancel:doSth()};ですが、非同期コールバックはありません。結果をキャンセルしてJSONに返すオプションはありません。
他のstackoverflowの質問では、nsIContentPolicyについては、
XPCOMの一部です。ヒント、サンプル、または説明が見つかりませんでした.Firefox WebExtension環境でこれをどのように使うことができますか?これは可能ですか?そしてもしそうなら、どうですか?
どちらもできない場合は、どうすればこのような拡張子を使用できますか? WebExtensionを使わずに廃止予定のXPCOMを使用する必要がありますか?
http://www.html5rocks.com/en/tutorials/service-worker/introduction/ – guest271314
を参照してください。@ guest271314:ありがとうございます。それは素晴らしいツールのように見えます。私はサービスワーカーを登録しようとしましたが、失敗しました。私がバックグラウンドスクリプトに入れたら、接続は安全ではないと言います。サービスワーカーJavaScriptファイルを追加しました。このファイルは、登録後に "web_accessible_resources"に呼び出されます。私はそれをコンテンツのスクリプトに入れても、同じエラーが表示されます。私は何かが恋しくなったり、どこに登録しなければならないのですか?余分な権限が必要ですか?それとも、HTTPSのないローカルなので、拡張コンテキストでは機能しませんか? URLはmoz-extension:// long-hash/...についてです。 – Zeussi
_ "HTTPSがないので、ローカルですか?"はいはい – guest271314