停止页面加载并在内容脚本中重定向
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
需要在后台脚本中收听事件。
我正在 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
需要在后台脚本中收听事件。