Javascript 拦截请求以强制Chrome Web扩展中的新选项卡,导致无限循环

Javascript 拦截请求以强制Chrome Web扩展中的新选项卡,导致无限循环,javascript,google-chrome-extension,Javascript,Google Chrome Extension,我使用的系统有一些恼人的导航行为,它是一个RESTful后端,所以我想到了构建一个Chrome Web扩展,它可以捕获特定的URL,并强制它们进入一个新的选项卡 使用WebExtension中的后台脚本,我使用chrome.webRequest.onBeforeRequest捕获请求,然后使用chrome.tabs.query({“active”:true,“currentWindow”:true},通过回调获取当前选项卡的索引。在回调中,我使用chrome.tabs.create打开一个与初始

我使用的系统有一些恼人的导航行为,它是一个RESTful后端,所以我想到了构建一个Chrome Web扩展,它可以捕获特定的URL,并强制它们进入一个新的选项卡

使用WebExtension中的后台脚本,我使用
chrome.webRequest.onBeforeRequest
捕获请求,然后使用
chrome.tabs.query({“active”:true,“currentWindow”:true}
,通过回调获取当前选项卡的索引。在回调中,我使用
chrome.tabs.create
打开一个与初始请求URL完全相同的新选项卡,不幸的是,打开新选项卡也会触发启动无限循环的
onBeforeRequest
侦听器


有人知道我可以使用什么机制来停止此操作吗?

在URL的查询中添加一个伪参数(在
之后?
之后)像
chrome.runtime.id+'=yes'
或者简单地将新选项卡的
id
存储在一个全局变量中,并在onBeforeRequest侦听器中检查它,清除该变量?我最终能够通过使用
chrome.webRequest.onBeforeRequest.addListener
回调参数中的frameId字段来解决它。frameId有一个位置当请求来自用户单击页面中的链接时为ve整数,当请求来自
chrome.tabs.create
chrome.tabs.update
时为零。