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

时间:2015-02-15 14:35:08

标签: javascript google-chrome-extension

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

我正在使用content_scripts

并尝试使用

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

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

甚至尝试使用

window.stop();

这也无法阻止页面加载。

有没有办法在页面加载之前停止页面加载并重定向?

1 个答案:

答案 0 :(得分:3)

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

内容脚本有run_at parameter,表示它们执行的时间(相对于页面加载)。

默认情况下,内容脚本以document_idle级别运行:Chrome会在执行页面之前等待页面完全加载。

您有两种选择:

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

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

  • 如果您担心根本不加载页面(不向网站发送请求),则需要在较低级别拦截它。 webRequest API可以提供实现这一目标的方法。

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

    请参阅CatBlock example