阻止加载网页部分内容的 Chrome 扩展程序

我正在开发一个Chrome扩展程序,该扩展程序通过删除主页上的推荐视频来简化YouTube的主页。视频缩略图需要很长时间才能加载,因此我想找到一种方法来取消这些请求。到目前为止,我有以下几点


manifest.json includes


"background": { 

  "persistent": true, 

  "scripts": ["background.js"] 

},

"permissions": [

  "webRequest", 

  "webRequestBlocking", 

  "*://www.youtube.com/"

]

背景.js


chrome.webRequest.onBeforeRequest.addListener(

  function (details) {

    if (details.url.indexOf("://www.youtube.com/...") !== -1) {

      return { cancel: cancel };

    }

  },

  { urls: ["<all_urls>"] },

  ["blocking"]

);

现在,我相信我只需要找到要取消的路径。我已经控制台记录了一些,但在理解每个请求的作用时迷茫了。我取消的某些请求不会导致任何内容被加载,而其他请求会导致标头被加载但不可单击。我尝试过使用检查器查看网络活动,但使用该工具的经验不多。解决这个问题的好方法是什么?


茅侃侃
浏览 137回答 1
1回答

ITMISS

在 devtools 元素检查器中,您可以检查缩略图以查看其 URL,然后在打开网络检查器的情况下重新加载页面并查看类似的 URL:https://i.ytimg.com/vi/*- 缩略图https://yt*.ggpht.com/*- 用户头像*是可变部分的占位符。为了能够阻止这些网址,您需要将它们添加到清单.json:"permissions": [&nbsp; "webRequest",&nbsp;&nbsp; "webRequestBlocking",&nbsp;&nbsp; "*://www.youtube.com/",&nbsp; "https://i.ytimg.com/vi/*",&nbsp; "https://yt*.ggpht.com/*"]由于您只想阻止图像,因此仅为此类请求注册侦听器是有意义的,这样它就不会不必要地执行,对于URL模式也是如此。要避免在控制台中发送有关网络请求被阻止的消息,您可以重定向到虚拟数据 URI。chrome.webRequest.onBeforeRequest.addListener(&nbsp; info => info.initiator === 'https://www.youtube.com' && { redirectUrl: 'data:,' },&nbsp; {&nbsp; &nbsp; urls: [&nbsp; &nbsp; &nbsp; 'https://i.ytimg.com/vi/*',&nbsp; &nbsp; &nbsp; 'https://yt*.ggpht.com/*',&nbsp; &nbsp; ],&nbsp; &nbsp; types: [&nbsp; &nbsp; &nbsp; 'image',&nbsp; &nbsp; ],&nbsp; },&nbsp; ['blocking']);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript