停止页面加载并在内容脚本中重定向

Stop page load and redirect in a content script

我正在 Chrome 中进行扩展,需要停止页面加载(无需完全加载页面)并在 ajax 查询匹配时重定向到 url。

我正在使用 content_scripts

并尝试使用

 window.location.replace("http://facebook.com");

但是页面加载完成后会发生重定向。

甚至尝试使用

window.stop();

这也无法停止页面加载。

是否有任何可能的方法来停止页面加载并在页面加载之前重定向它?

您正在尝试使用内容脚本。

内容脚本有一个 run_at parameter,指示它们何时执行(相对于页面加载)。

默认情况下,document_idle 级别的内容脚本 运行:Chrome 等到页面完全加载后再执行。

您有两个选择:

  • 可以保留content script路由,但需要在content script配置中注明"run_at" : "document_start"参数

    这将尽快执行您的代码(在加载文档之前,但在响应开始之后)。

  • 如果您担心根本无法加载页面(未向站点发送请求),则需要在较低级别拦截它。 webRequest API 可以提供这样做的方法。

    如果您在 onBeforeRequest 事件中捕获请求,您甚至可以在发送之前重定向它。建议按类型过滤。请注意,在这种情况下您甚至不需要内容脚本:webRequest 需要在后台脚本中收听事件。

    参见CatBlock example