在后台调用API key,在WebExtension中调用内容脚本
Calling API Keys in background and content scripts in WebExtension
我有一个API密钥和我的扩展所需的秘密,我已经将它们存储在一个文件中,按照自己的格式,像这样。
key.js
var APP_KEY = 'App Key Goes Here';
var APP_SEC = 'App Secret Goes Here';
manifest.json
// manifest.json
{
"manifest_version": 2,
"name": "Trakt for IMDb",
"version": "0.1a",
"background": {
"scripts": [
"js/key.js",
"js/background.js"]
},
"content_scripts": [
{
"js": [
"js/key.js",
"js/main.js"
]
}
]
}
在弹出式页面上,我可以像<script type="text/javascript" src="../js/key.js"></script>
一样引用这个文件,它调用了2个变量,但我不知道如何引用它,所以我的背景和内容脚本也可以访问它们。
我已经尝试引用key.js
文件在我的manifest.json
文件如下
"background": {
"scripts": [
"js/key.js",
"js/background.js"
]
}
但这不起作用。我得到一个APP_KEY is not defined
main.js
console.log('Content: ' + APP_KEY);
有什么方法可以尝试做我正在做的吗?
这是您希望的工作方式。一个JavaScript文件可以在后台脚本和内容脚本中使用,以共享相同的函数或变量。
在background
键中定义的所有脚本都在相同的上下文中运行。因此,在key.js
中定义的变量APP_KEY
和APP_SEC
可以在background.js
中使用。
在清单中的单个js
键中定义的所有脚本。json文件的content_scripts
密钥共享一个上下文。这允许您在代码中使用jQuery之类的东西。我没有检查是否有一个单独的上下文创建单独的js
列表,如果matches
键结果在两个集合被加载到一个特定的页面,或选项卡。此外,我还没有检查是否在清单之间共享单个上下文。文件的content_scripts
加载内容脚本的方法和其他加载内容脚本的方法(如tabs.executeScript()
)。
以下是一个完整的扩展,已在Firefox和Google Chrome中进行了测试。在这两个浏览器中,key.js
中定义的变量在后台脚本和内容脚本中都可用。
manifest.json :
{
"manifest_version": 2,
"name": "Variables in other files",
"description": "Test availability of variables from anther JavaScript file",
"version": "0.1",
"background": {
"scripts": [
"js/key.js",
"js/background.js"]
},
"content_scripts": [
{
"matches": ["*://*.mozilla.org/*"],
"js": [
"js/key.js",
"js/contentScript.js"
]
}
]
}
js/key.js :
var APP_KEY = 'App Key Goes Here';
var APP_SEC = 'App Secret Goes Here';
js/background.js :
console.log('Background: ' + APP_KEY);
console.log('Background: ' + APP_SEC);
js/contentScript.js :
console.log('Content: ' + APP_KEY);
console.log('Content: ' + APP_SEC);
加载扩展名时的控制台输出:
Background: App Key Goes Here
Background: App Secret Goes Here
导航到mozilla.org
时的控制台输出:
Content: App Key Goes Here
Content: App Secret Goes Here
我不知道为什么当你最初尝试它时,它没有为你工作。
- 如何在收到电子邮件时自动调用脚本
- jQuery:调用脚本时隐藏元素
- 如何通过 ajax 跨域调用脚本
- PHP:更改调用脚本的环境
- PHP调用脚本函数,返回值为Uncaught SyntaxError:意外的令牌ILLEGAL
- 将背景图像更改为另一个由ajax调用脚本动态创建的图像
- 有没有办法从 Javascript 中的函数中调用脚本标签和样式标签
- 也需要为“加载”调用脚本,而不仅仅是在“模糊”上
- 如何使用 onclick 按 id 调用脚本
- 使用 jQuery 调用脚本以及 if 语句中的参数
- 如何在显示网页时调用脚本 jquery
- C# asp.net MVC - 使用参数从 html.actionlink 调用脚本函数
- Javascript 表单验证不起作用 - 未调用脚本
- jQuery 获取对调用脚本标记的引用
- 通过 ajax 调用多个脚本.只有在脚本 1 完成执行后,才应调用脚本 2
- 哪个更好:在调用脚本时包含或 src
- 调用脚本时出现 Google 应用脚本关闭错误
- 未调用脚本 JS
- 如何获取从中调用脚本的页面名称
- 在Java中从某个URL调用脚本