javascript - chrome插件消息传递的问题
本文介绍了javascript - chrome插件消息传递的问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
实现点击插件图标,向网页插入插件的Dom,再次点击Dom消失,以此类推
打算用变量flag记录dom是否开启,尝试了下chrome文档里的短连接和长连接,短连接从bg.js到content.js没有问题,但变量无法反馈回去;长连接我没尝试成功。
1.应该选择那种消息传递方式,具体如何实现;
2.是否有其他方法实现点击插件图标开关Dom。
插件结构如下
manifest.json
...
"background": {
"scripts" : ["bg.js"],
"persistent": false
},
"permissions": [
"activeTab",
"tabs",
"http://*/*",
"https://*/*"
]
bg.js
chrome.browserAction.onClicked.addListener(function(tab) {
chrome.tabs.executeScript(null, {file: "jquery.min.js"});
chrome.tabs.executeScript(null, {file: "content.js"});
// 消息传递到content.js
....
});
});
content.js
//接受bg.js消息
...
//Dom操作
解决方案
我没试过长连接的方法,我之前实现过一个bg--content之间传递消息的demo。bg.js
chrome.tabs.query({active: true, currentWindow: true},
function(tabs) {
chrome.tabs.sendMessage(tabs[0].id, {greeting: "get box"}, function(response) {
console.log(response);
});
}
);
content.js
function onMessage(done, opt) {
chrome.runtime.onMessage.addListener(
function(message, sender, sendResponse) {
if (message) {
setTimeout(function(){
if (done && opt) {
done(opt);
}
}, 0)
sendResponse({greeting: "Set Inputs"})
}
});
}
这篇关于javascript - chrome插件消息传递的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文