允许从chrome.tabs.executeScript注入的代码访问内容脚本全局变量?

时间:2014-08-07 10:30:35

标签: javascript google-chrome google-chrome-extension code-injection

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

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

其中caller.js只包含

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

和一个表现良好的内容脚本定义

var test = 42;

alert()正确显示并显示42值。所以我可以访问&#39;测试&#39;全球。 那么我误解了什么吗?

1 个答案:

答案 0 :(得分:1)

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

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