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

Stop page load and redirect in a content script

本文关键字:加载 重定向 脚本      更新时间:2023-11-05

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

我正在使用content_scripts

并尝试使用

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

但是,一旦页面加载完成,就会发生重定向。。

甚至尝试使用

window.stop();

这也不能停止页面加载。

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

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

内容脚本有一个run_at参数,该参数指示它们执行的时间(相对于页面加载)。

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

你有两个选择:

  • 您可以保留内容脚本路由,但需要在内容脚本配置中指明"run_at" : "document_start"参数。

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

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

    如果在onBeforeRequest事件中捕获到请求,则可以在发送之前对其进行重定向。建议按类型筛选。请注意,在这种情况下,您甚至不需要内容脚本:webRequest事件需要在后台脚本中侦听。

    请参见CatBlock示例。