我禁用扩展后在chrome扩展中启用它后,无法通过content.js和background.js进行通信

时间:2018-06-27 12:32:15

标签: google-chrome-extension

我想做的是

Popup.html

  

在popup.html中,我创建了一个登录页面,在用户单击“登录”按钮后,我当时已成功登录到本地存储中,并存储了我的令牌和用户名。

content.js

    chrome.runtime.sendMessage({greeting: "hello"}, function (response) {
            // console.log('Data to Call', response, dialingNumber);
            if (response == undefined || response == null) {
                window.confirm('Please LogIn...!');
            }
            else {
// ....
}  

background.js

chrome.runtime.onMessage.addListener(
        function (request, sender, sendResponse) {
            var credentials = localStorage.getItem('voi-auth').split("|");
            console.log(sender.tab ?
                "from a content script:" + sender.tab.url :
                "from the extension");
            if (request.greeting == "hello")
                sendResponse({farewell: credentials});
        });  
  

在我第一次安装时,它工作正常,能够从内容脚本中调用存储在本地存储中的凭据。

问题

  

我的问题是,如果我转到该扩展名并禁用该扩展名然后再次启用它,则我无法在内容脚本和后台脚本之间进行通信,即使我调用了send message函数,内容脚本中的响应也未定义本地存储具有令牌和用户名。可悲的是,只有当我检查background.js并将其一直打开时,它才能正常工作。当我关闭弹出窗口时,它将不起作用。

是否有任何解决方案可以避免这种情况,例如执行后台页面?

0 个答案:

没有答案