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操作
阅读 2.6k
1 个回答

我没试过长连接的方法,我之前实现过一个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"})
            }
    });
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题