0

如何阻止GeckoView中特定域的图像加载?我尝试setLoadsImagesAutomatically从 GeckoView 中的 webview 中搜索 equitant 方法,但没有运气。我发现很少有这样的链接这个。我们可以通过在 GeckoView 中注入 javaScript 来阻止图像加载吗?

4

1 回答 1

1

您可以注册一个系统 WebExtension installBuiltIn,使用它webRequest.onBeforeRequest来阻止从给定域或任何其他条件加载图像。

例子:

为您的扩展程序创建一个文件夹/assets/,例如/assets/block-images并添加一个manifest.jsonbackground.js文件,如下所示:

清单.json

{
  "manifest_version": 2,
  "name": "block-images",
  "version": "1.0",
  "description": "Block images from mozilla.org",
  "browser_specific_settings": {
    "gecko": {
      "id": "block-images@example.com"
    }
  },
  "permissions": [
    "*://*.mozilla.org/*",
    "webRequest",
    "webRequestBlocking"
  ],
  "background": {
    "scripts": ["background.js"]
  }
}

背景.js

"use strict";

function listener(details) {
  // blocks all images from twitter.com
  return {cancel: true};
}

browser.webRequest.onBeforeRequest.addListener(
  listener,
  {urls: ["*://*.mozilla.org/*"], types: ["image"]},
  ["blocking"]
);

然后,您可以在启动时使用以下命令安装扩展ensureBuiltIn

  runtime
      .getWebExtensionController()
      .ensureBuiltIn(
          "resource://android/assets/block-images/",
          "block-images@example.com");

之后,您在 GeckoView 中加载的任何页面都会按照文件mozilla.org中的定义阻止图像background.js

于 2022-02-22T16:38:04.803 回答