javascript - chrome插件消息传递的问题

查看:82
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆