request - Mozilla 插件加载太晚而无法阻止资源
问题描述
我正在尝试取消从 studio.code.org 到 www.google.com/jsapi 的请求,以帮助加快页面加载速度。在我的语言环境中,谷歌被阻止,但浏览器等待 75 秒后放弃。我想通过阻止请求来防止延迟(并且页面似乎在没有 jsapi 的情况下工作正常)。
我按照https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/webRequest/onBeforeRequest中的示例安装了插件。我包含了一个 console.log 语句来查看我的代码被调用,但它仅在浏览器等待另外 75 秒以尝试加载我希望阻止的资源后才显示。
如果这不起作用,我愿意接受其他方法。
清单.json:
{
"manifest_version": 2,
"name": "cancel-google",
"version": "1.0",
"permissions": [
"webRequest",
"webRequestBlocking"
],
"content_scripts": [
{
"matches": ["https://studio.code.org/*"],
"js": ["cancel-google.js"]
}
]
}
取消-google.js:
// match pattern for the URLs to block
var pattern = "*www.google.com/jsapi";
console.log("cancelator script loaded");
// cancel function returns an object
// which contains a property `cancel` set to `true`
function cancel(requestDetails) {
console.log("Cancelling: " + requestDetails.url);
return {cancel: true};
}
// add the listener,
// passing the filter argument and "blocking"
browser.webRequest.onBeforeRequest.addListener(
cancel,
{urls: [pattern]},
["blocking"]
);
解决方案
cancel-google.js 应该作为后台脚本加载,对于大多数 WebExtension API 来说都是如此。
{
"name": "Your Addon",
"manifest_version": 2,
"background": {
"scripts": ["cancel-google.js"]
}
}
然后它应该工作。
推荐阅读
- heroku - 在 Heroku 上部署 jHipster 应用程序失败。错误 -> “/bin/sh: 1: ./mvnw: 未找到”
- java - Dagger 注入的类在使用 Dagger 时一直为空
- java - 我的二叉搜索树不打印值,不知道是打印方法还是加法错误
- c# - 不同解决方案接口之间的区别
- octave - 如何将我的 Octave 版本升级到最新版本?
- pdf - 使用 Cairo 矢量图形库在 pdf 上绘制图像
- python - 如何从这个标签中获取href链接?
- python - 如何设置 Python 日志级别?
- c - pthread互斥锁不起作用,每次都得到一个随机值
- android - 如何在 Android 的 TextInputEditText 中启动提示文本?