Javascript Google Chrome扩展的内容脚本中的选项卡ID和根URL是否发生过更改?

Javascript Google Chrome扩展的内容脚本中的选项卡ID和根URL是否发生过更改?,javascript,google-chrome,google-chrome-extension,content-script,Javascript,Google Chrome,Google Chrome Extension,Content Script,从我的Google Chrome扩展注入网页的内容脚本的角度来看,网页的标签ID和根URL是否曾经改变过 (通过根URL,我假设可能的IFRAMEs层次结构中顶部窗口的URL。) 或者,换句话说,在内容脚本开始运行时检索选项卡ID和根URL并将其缓存在全局变量中以供以后使用是否安全?是的,URL可以更改 而任何导航都会卸载脚本,如history.pushState()不会;您将拥有一个全新的任意同源URL和内容脚本的旧副本。更糟糕的是,没有任何事件可以轻易拦截 对于tabId,这应该是常量,但是

从我的Google Chrome扩展注入网页的内容脚本的角度来看,网页的标签ID和根URL是否曾经改变过

(通过根URL,我假设可能的IFRAMEs层次结构中顶部窗口的URL。)


或者,换句话说,在内容脚本开始运行时检索选项卡ID和根URL并将其缓存在全局变量中以供以后使用是否安全?

是的,URL可以更改

而任何导航都会卸载脚本,如
history.pushState()
不会;您将拥有一个全新的任意同源URL和内容脚本的旧副本。更糟糕的是,没有任何事件可以轻易拦截


对于
tabId
,这应该是常量,但是如果页面导航到别处,
tabId
不会改变,但是内容脚本会改变。

谢谢。那么有没有一种方法可以获取顶部窗口的URL呢。
document.url
将仅为iframe返回它。好的,将其删除。通过使用
window.top.document.URL
(来自内容脚本)获取顶部窗口URL。所有iFrame都是相同的。