从弹出窗口在后台调用函数

Call a function in background from popup

是否可以从弹出窗口中在后台脚本中调用函数?除了这个问题,我无法解释得更多。这不是我尝试做的错误,而是我完全不知道该怎么做的错误。我想使在弹出页面中单击一个按钮成为可能,该按钮将调用在后台页面中定义的函数。


试试这个

1
2
 var bgPage = chrome.extension.getBackgroundPage();
 var dat =  bgPage.paste(); // Here paste() is a function that returns value.


使用消息传递确实可以实现。

popup.js

1
2
3
$("#button").click(function(){
    chrome.runtime.sendMessage({ msg:"startFunc" });
});

background.js

1
2
3
4
5
6
7
8
9
var func = function(){
    alert("Success!");
};

chrome.runtime.onMessage.addListener(
    function(request, sender, sendResponse){
        if(request.msg =="startFunc") func();
    }
);

您可以仅在popup.js中调用background.js函数。您无需执行任何其他操作。至少我是这种情况。

编辑:您可能需要添加

"background": {
"scripts":"background.js"
}

<清单>在manifest.json文件中。


您仍然可以使用chrome.extension.sendMessage
但这已被弃用。
使用chrome.runtime.sendMessagechrome.runtime.onMessage.addListener代替。