关于制作Chrome扩展程序和我会尝试的事情我是如此新颖:
我将从" browser_action"发送JS变量to" content_scripts"
"browser_action": {
"default_popup": "src/browser_action/index.html"
},
"content_scripts": [
{
"matches": ["<all_urls>"],
"js": ["src/inject/inject.js"]
}
]
示例:如果......
src / browser_action / main.js: (browser_action)
var MyVar = "Hello world";
如何将MyVar
发送到 src / inject / inject.js ?像..
// What function I should do before to alert()?
if (typeof MyVar !== 'undefined') {
alert(MyVar);
}
答案 0 :(得分:2)
如果要将消息(或数据)从后台发送到内容脚本,可以使用chrome.tabs.sendMessage()。但是您需要指定将哪个选项卡(使用tabId
)发送给它。你应该阅读message passing in extensions。
示例:
向所选标签中的内容脚本发送消息
<强> main.js 强>
chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
chrome.tabs.sendMessage(tabs[0].id, {greeting: "hello"}, function(response) {
console.log(response.farewell);
});
});
在接收端,您需要设置chrome.runtime.onMessage事件监听器来处理消息
<强> inject.js:强>
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
if (request.greeting == "hello")
sendResponse({farewell: "goodbye"});
});
答案 1 :(得分:0)
我是通过chrome.storage
#ref
示例:
在 manifest.json
上添加“存储”权限"permissions": [
"storage"
]
在main.js上 (browser_action)
chrome.storage.sync.set({'user':{email:'hello@world.com'}});
关于inject.js (content_scripts)
chrome.storage.onChanged.addListener(function(c,a){
chrome.storage.sync.get('user',function(o){
if(!$.isEmptyObject(o)){ // Check via jQuery function
// Do somethings...
console.log(o.user.email);
}
});
});