关于javascript:是否可以从chrome.tabs.executeScript注入的代码访问内容脚本全局变量?

Allowed access to content script globals from a chrome.tabs.executeScript injected code?

我在文档中读到,在页面上执行的javascript无法访问内容脚本的变量和函数(请参见此处)。但是,如果我在background.html中使用以下简单代码:

1
<script src="/path/to/caller.js">

其中caller.js仅包含

1
2
3
chrome.browserAction.onClicked.addListener(function(tab) {
    chrome.tabs.executeScript(null, { code: 'alert(test)'});
}

和内容丰富的脚本定义了

1
var test = 42;

alert()正确出现并显示42值。因此,我可以全局访问"测试"。
那我误会了吗?


内容脚本在称为隔离世界的特殊环境中执行。他们可以访问所注入页面的DOM,但不能访问该页面创建的任何JavaScript变量或函数。

chrome.tabs.executeScript和清单注入的content_script都在同一环境中执行。该文档指定您的扩展代码无法从网站本身访问变量或函数。