如何在chrome扩展程序中静默取消webRequest
How to cancel webRequest silently in chrome extension
我在这里重新发布我的问题。
在我的扩展中,我想根据 url 模式取消一些 webRequests。我的问题是,如果我在onBeforeRequest事件侦听器中返回{cancel:true},浏览器会重定向到一个页面,告诉我该请求被某个扩展阻止。但我只想默默地取消请求(因为什么也没发生)。
我还尝试在onBeforeRequest事件侦听器中返回{redirectUrl:"},控制台会记录一个错误,指出"不是有效的URL,并且浏览器底部出现一个栏,说"等待扩展"。为了关闭该栏,我然后在该网页中运行内容脚本"window.stop()"。这有时有效,但并非总是如此。所以我想知道是否有人有更好的解决方案。谢谢!!
你应该使用 "javascript:" url 代替:
{
redirectUrl:"javascript:"
}
return {redirectUrl: 'javascript:void(0)'};
重定向到回复HTTP状态代码204的页面,例如 https://robwu.nl/204 这是我的网站,我没有记录任何流量到这个URL。
该规范要求对 HTTP 状态为 204 的响应采取以下行为:
如果客户端是用户代理,则不应更改其文档视图,从而无法发送请求。此响应主要用于允许在不导致用户代理的活动文档视图更改的情况下执行操作的输入,尽管任何新的或更新的元信息都应应用于当前在用户代理的活动视图中的文档。
下面是一个简单的示例,一个以静默方式阻止所有对YouTube的请求的扩展程序:
chrome.webRequest.onBeforeRequest.addListener(function(details) {
var scheme = /^https/.test(details.url) ? 'https' : 'http';
return { redirectUrl: scheme + '://robwu.nl/204' };
}, {
urls: ['*://www.youtube.com/*'] // Example: Block all requests to YouTube
}, ['blocking']);
此示例根据请求的方案重定向到 http://robwu.nl/204 或 https://robwu.nl/204,以避免混合内容警告。
若要使此示例正常工作,需要在清单文件中声明站点的 webRequest、webRequestBlock 和主机权限。
- 如何在angularJS中编辑时,如果DB中的值为true,则设置复选框,如果值为false,则取消选中复选框
- jquery点击函数select&取消选择
- 使用Jquery选择或取消选择ListView中的所有复选框
- 使用jquery选中/取消选中单个复选框
- 使用javascript取消隐藏和隐藏表单中的某些元素
- 如何销毁/删除/取消绑定SnapSVG.js
- 滚动然后捕捉到顶部而不是取消捕捉
- 取消绑定主干视图事件
- 如何取消object.prototypes javascript的一个函数
- 使用javascript在页面加载时取消选中所有复选框
- 阻止浏览器对keydown事件作出反应,但不取消该事件
- jquery选中并取消选中所有操作
- IE11中的第二个调用取消了第一个Fetch API调用
- 如何知道使用socket.io订阅/取消订阅频道
- 如何在单击“提交”按钮时为“新建”窗口编写JavaScript,用“确定”和“取消”显示注册信息
- 如何在javascript中取消选择文本框
- 如何从另一个处理程序内部取消JavaScript事件处理程序函数的执行
- (取消)使用单独的复选框激活复选框列表
- 如何取消选择所选选项并将JqueryMobile中选择的值刷新为1st
- 如何在chrome扩展程序中静默取消webRequest