对于 chrome 扩展,main.js 如何从 popup.js 调用函数?

For chrome extension, how can main.js call function from popup.js?

我已经从网页中提取用户名和密码(main.js) 并尝试将它们存储在indexeddb(popup.js) 中。至此,popup.html(popup.js)可以手动存储用户名和密码。我想在有用户名和密码的情况下调用popup.js中的函数。非常感谢。

函数在main.js

if (username && password)    
{            
    if(confirm("Store domain with username and password?"))      
    {        
        //want to call function test() from popup.js       
    }
    else
    {
    }    
}

popup.js

中的函数
function test()
{
    alert("function called");
}

manifest.json

{
  "name": "PM Extension",
  "version": "1.0",
  "manifest_version": 2,
  "description": "a Google Chrome extension",
  "permissions": ["tabs"],

  "browser_action": {  
    "default_icon": "icon.png" ,
    "default_title": "PM Extension",
    "default_popup": "popup.html"
  },

  "content_scripts": [
    {
      "matches": ["http://*/*", 
      "https://*/*"
      ],
      "js": ["jquery.min.js", "main.js"],
      "run_at": "document_start"
    }]
}

main.js

chrome.runtime.sendMessage('Your string/ object/ whatever', function(response) {
    console.log(response.farewell);
});

popup.js

chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {
    if (request === 'What I want to recieve') {
        // Do something
        sendResponse('A response');
    } 
});

参见Massage Passing documentation