在 GeckoView 中阻止来自特定域的图像 android

Block images from particular domain in GeckoView android

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

您可以使用 installBuiltIn that uses webRequest.onBeforeRequest 注册系统 WebExtension 以阻止从给定域或任何其他标准加载图像。

示例:

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

manifest.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"]
  }
}

background.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 中加载的任何页面都会按照 background.js 文件中的定义将图像屏蔽到 mozilla.org