我正在Chrome中进行扩展,需要停止加载页面(不完全加载页面),如果匹配来自ajax查询,则会重定向到网址。
我正在使用content_scripts
。
并尝试使用
window.location.replace("http://facebook.com");
但是一旦页面加载完成就会发生重定向。
甚至尝试使用
window.stop();
这也无法阻止页面加载。
有没有办法在页面加载之前停止页面加载并重定向?
答案 0 :(得分:3)
您正在尝试使用内容脚本。
内容脚本有run_at
parameter,表示它们执行的时间(相对于页面加载)。
默认情况下,内容脚本以document_idle
级别运行:Chrome会在执行页面之前等待页面完全加载。
您有两种选择:
您可以保留内容脚本路由,但需要在内容脚本配置中指明"run_at" : "document_start"
参数。
这将尽快执行您的代码(在加载文档之前,但在响应开始之后)。
如果您担心根本不加载页面(不向网站发送请求),则需要在较低级别拦截它。 webRequest
API可以提供实现这一目标的方法。
如果您在onBeforeRequest
事件中捕获了请求,则可以在发送之前重定向该请求。建议按类型过滤。请注意,在这种情况下您甚至不需要内容脚本:需要在后台脚本中监听webRequest
个事件。
请参阅CatBlock example。