Chrome扩展程序-打开没有图像的标签

时间:2018-08-17 08:48:21

标签: javascript google-chrome-extension

我建立了一个Chrome扩展程序,该扩展程序在新标签页中打开用于html解析的网址。一切正常,但我想通过在加载页面之前剥离图像来优化加载速度。

到目前为止,我以这种方式调用该标签页:

function CreateTab(createProperties, shop_list) {
  return new Promise((resolve, reject) => {
    chrome.tabs.create(createProperties, tab => {
      if (chrome.runtime.lastError) {
        reject(new Error(chrome.runtime.lastError));
      } else {
        chrome.tabs.executeScript(tab.id, {
          file: 'GetSource.js',
        }, async function(results) {
          my parsing code here
        }
      }
    }
  }
}

当调用executeScript时,已经太晚了,页面在那里。有没有一种方法可以在加载页面之前执行脚本,以便在获取html之前可以删除图像?

谢谢 洛朗(Laurent)

2 个答案:

答案 0 :(得分:1)

您可以将 chrome.webRequest API(https://developer.chrome.com/extensions/webRequest)与 onBeforeRequest 结合使用 当即将发生请求时触发。在建立任何TCP连接之前发送此事件,该事件可用于取消或重定向请求。这样的事情应该可以防止加载.jpg图片:

chrome.webRequest.onBeforeRequest.addListener(
        function(details) {
          return {cancel: details.url.indexOf(".jpg") != -1};
        },
        {urls: ["<all_urls>"]},
        ["blocking"]);

答案 1 :(得分:0)

也许有人仍然需要这个。

摘自Chrome文档:Chrome's Examples of webRequest Blocking

您可以使用一个侦听器阻止多种类型的图像。

chrome.webRequest.onBeforeRequest.addListener(
    function(details) { 
        return { cancel: true }; 
    },
    
    { 
        urls: ["*://*/*.jpg", "*://*/*.png", "*://*/*.gif", "*://*/*.ico"] 
    },
    
    ["blocking"]
);

您可以根据需要修改网址格式。

请不要忘记在webRequest文件中添加webRequestBlockingmanifest.json权限。