1

我正在制作一个 Chrome 扩展程序,它大量使用在当前活动窗口中获取当前活动选项卡的 id。使用围绕逻辑的 chrome.tabs.query 使我的代码变得混乱,但是将它放在它自己的函数中以返回当前选项卡总是返回未定义 - 为什么?

function _getCurrentTab(){
    var theTab;
    chrome.tabs.query({active:true, currentWindow:true},function(tab){
        theTab = tab;
    });
    return theTab;
};
console.log(_getCurrentTab());

有人能帮忙吗?

4

1 回答 1

4

chrome.tabs.query是异步的,因此您的 returntheTab = tab在回调或回调本身执行之前执行,因此请尝试:

function _getCurrentTab(callback){ //Take a callback
    var theTab;
    chrome.tabs.query({active:true, currentWindow:true},function(tab){
        callback(tab); //call the callback with argument
    });
};

_displayTab(tab){ //define your callback function
    console.log(tab);
 };

 _getCurrentTab(_displayTab); //invoke the function with the callback function reference
于 2013-10-03T23:08:23.303 回答