gpt4 book ai didi

javascript - 在将资源加载到 Webextensions 中之前,如何根据内容阻止资源?

转载 作者:行者123 更新时间:2023-12-03 06:50:57 25 4
gpt4 key购买 nike

我想在资源(例如 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 does not support the "requestBody" option.

噢,故事很糟糕,一点也不酷。所以我需要一个异步 XHR 请求来获取 URL 数据:

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 {cancel: X}; 接受普通函数,例如return {cancel: doSth()};,但不接受异步回调。我无法选择将结果“返回”到取消 JSON。

在其他 stackoverflow 问题中,我读到了 nsIContentPolicy ,这是
的一部分XPCOM。我没有找到提示、示例或描述,说明如何在 Firefox Webextension 环境中使用它。这可能吗?如果是,怎么做?

如果这两件事都不可能,我该如何进行这样的扩展?我是否必须使用不带 Webextension 的已弃用 XPCOM?

最佳答案

看起来 requestBody 将登陆即将推出的 Firefox 版本(目前似乎是 50):bugzilla.mozilla.org/show_bug.cgi?id=1201979 。也就是说,你现在可以在 Beta 版中进行测试了,因为 49 已于本周发布。

关于javascript - 在将资源加载到 Webextensions 中之前,如何根据内容阻止资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37504827/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com