我试图使用chrome扩展程序在网页上注入一些JS。由于我只想在点击时启用它,而不是每次访问页面时都启用它,我有以下清单:
{
"name": "Assistant",
"version": "0.1",
"manifest_version": 2,
"permissions": [
"https://*/*",
"http://*/*",
"tabs"
],
"background": {
"scripts": [
"js/background.js"
],
"persistent": true
},
"content_scripts": [{
"css": ["css/style.css"],
"matches": ["http://*/*", "https://*/*"]
}],
"browser_action": {
"default_icon": "icons/icon.png",
"default_title": "Assistant"
},
"web_accessible_resources": ["css/style.css"]
}
在background.js中,我用这个加载脚本:
chrome.browserAction.onClicked.addListener(function(tab) {
chrome.tabs.executeScript(null, { file: "js/jquery.min.js" }, function() {
chrome.tabs.executeScript(null, { file: "js/script.js" });
});
});
现在在script.js上我有以下一行:
var a = "testing";
window.b = "testing";
alert("testing");
当我点击按钮时,浏览器会立即显示"测试"的警报,这意味着它正确运行了代码。但是,当我进入控制台并尝试访问a或window.b时,两者都未定义。
这些变量是否以某种方式被沙箱化?如何使其可用于页面脚本?