我有一个有很多代码行的铬线分机。越来越多的人要求我在其他浏览器(比如firefox)上提供这个扩展。
因为它是一个chrome扩展,所以包含了许多特定于铬的函数.开始时,我希望将所有特定于铬的方法放在javascript文件"chrome.js“中,并用自己的方法封装铬函数,这样我就可以轻松地创建其他特定于浏览器的方法。
对于简单的方法来说,这是非常容易的:
function geti18nMessage(messageId) {
return chrome.i18n.getMessage(messageId)
}
但是如何封装返回函数的(异步)方法
示例:
chrome.runtime.sendMessage(
{
Action: "Load"
}, function (response)
{
console.log("response is "+response);
});
这并不是真正的铬特定,但铬问题是一个现实世界的例子,我的问题。
发布于 2014-11-10 14:50:17
您可以像任何其他参数一样传递函数:
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(...);
});
}
https://stackoverflow.com/questions/26854397
复制相似问题