我正在开发一个谷歌浏览器扩展。我在我的后台 javascript 文件(example.js)之一中为变量设置了一个值。我需要访问该值或将其传递给另一个后台 javascript 文件(extjs.js)。我该怎么做?有全局变量的概念吗?我的浏览器控制台中没有收到任何错误。
我的清单.json
{
"name": "Example",
"version": "31.0.1650.57",
"manifest_version": 2,
"background":{
"scripts":["common.js","example.js","extjs.js"]
},
"content_scripts": [
{
"matches": ["<all_urls>"],
"js": ["myscript.js"]
}
]
}
我的例子.js
function trial()
{
/... some functionality../
var result = data;
}
我的 extjs.js
alert(result);
我知道我错过了一些东西。
问候,
尼基尔
所有后台脚本共享相同的 JS 上下文,因此其中一个脚本中声明的任何变量/函数都可供所有其他脚本使用(当然加载顺序也很重要)。
当指定一个或多个后台脚本时,Chrome会自动创建一个最小的HTML页面并插入一些<script>
体内的标签。例如。自动生成的背景页面应如下所示:
<html>
<head></head>
<body>
<script src="common.js"></script>
<script src="example.js"></script>
<script src="extjs.js"></script>
</body>
</html>
您可以通过导航到查看您的背景页面chrome://extensions
并检查Developer mode
复选框。然后,在每个扩展下都有一个标记为“后台页面”的链接,您可以单击该链接来打开后台页面的 DevTools 控制台。
UPDATE:
我只是注意到您正在尝试访问函数局部变量(在trial()
函数)来自全局上下文(这是不可能的)。
Since var result
被定义在里面trial()
函数,它是not在函数范围之外可以访问。 (也就是说,您将无法从example.js
任何一个。)
您需要像这样更改您的代码:
示例.js:
var outer_result = 0;
function trial() {
var inner_result = 1; // <-- this is a local variable
outer_result = 2; // <-- this is a global variable
}
// `inner_result` is undefined outside the function
extjs.js:
console.log(outer_result); // <-- '0' since `trial()` is not invoked yet
console.log(inner_result); // <-- 'undefined' since it is never defined
trial(); // <-- executing `trial()` function
console.log(inner_result); // <-- 'undefined' since it is function-local
console.log(outer_result); // <-- '2' since `trial()` modified it
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)