我有一个带有大量代码的chrome扩展。越来越多的人要求我在其他浏览器(如firefox)上提供该扩展。
因为它是chrome扩展,所以包含了许多特定于chrome的功能。在我开始时,我想将所有特定于chrome的方法放在javascript文件“chrome.js”中,并使用我自己的chrome函数封装,这样我就可以轻松地创建其他特定于浏览器的方法。
对于简单的方法来说,这很容易:
function geti18nMessage(messageId) {
return chrome.i18n.getMessage(messageId)
}
但如何封装(异步)返回函数的方法?
示例:
chrome.runtime.sendMessage(
{
Action: "Load"
}, function (response)
{
console.log("response is "+response);
});
这不是特定于Chrome的,但Chrome问题是我的问题的真实例子。
答案 0 :(得分:2)
你可以像任何其他参数一样传递函数:
function sendMessage(options, fn) {
return chrome.runtime.sendMessage(options, fn);
}
这假设您致力于在所有平台上使用相同的Chrome回调方案。如果你想将回调自定义为你自己设计的东西,那么你可以像这样替换它:
function sendMessage(options, fn) {
return chrome.runtime.sendMessage(options, function() {
// do any processing of the chrome-specific arguments here
// then call the standard callback with the standard arguments you want to
// support on all platforms
fn(...);
});
}