我正在编写Chrome扩展程序,并且需要某些选项卡:
请提出一个方向,以实现两个目标。
我尝试过的方法...我可以防止加载原始内容:
chrome.webRequest.onBeforeRequest.addListener(...
return {cancel: true};
然后显示一个技术页面:
对服务器的请求已被扩展程序阻止。 尝试禁用您的扩展程序。 ERR_BLOCKED_BY_CLIENT
(也许可以有一个自定义的技术页面?)
但这也阻止了我的内容脚本的加载,因此我失去了更改标签的DOM的能力。
没有onBeforeRequest
,我可以通过内容脚本在选项卡中显示自定义文本,但Chrome仍会请求原始URL。
答案 0 :(得分:1)
不是通过返回{cancel: true}
来取消请求,而是通过返回{redirectUrl: "..."}
将请求重定向到包含您的自定义内容的URL。
最简单的方法是在扩展程序中以a web-accessible resource的形式包含“请求阻止” HTML文档。您可以使用查询字符串参数将参数传递给文档-在获取可访问网络的资源时,它们将被忽略,但是可以使用window.location.search
从内容脚本中进行访问。
使用这种方法的扩展的一个著名示例是uBlock Origin,它使用可访问Web的HTML页面document-blocked.html
来替代被阻止的Web页面。