我正在撰写Chrome扩展程序。我有以下代码。
function getCurrentTab() {
var r;
chrome.tabs.query({
active:true,
currentWindow:true
},function (tabs) {
r=tabs[0];
console.log(r);
});
return r;
}
console.log(getCurrentTab());
我希望此函数返回活动标签。不幸的是,回调函数中的归因不会影响父函数getCurrentTab
中的r,我无法弄清楚为什么会这样。
此代码写入控制台:
undefined
Object {active: true, height: 954, highlighted: true, id: 16, incognito: false…}
期望的结果将是:
Object {active: true, height: 954, highlighted: true, id: 16, incognito: false…}
Object {active: true, height: 954, highlighted: true, id: 16, incognito: false…}
答案 0 :(得分:0)
由于查询函数的回调是异步的,你需要为getCurrentTab函数提供一个回调函数并在那里进行操作:
function getCurrentTab(callback) {
chrome.tabs.query({
active:true,
currentWindow:true
}, function (tabs) {
callback(tabs[0]);
});
}
getCurrentTab(function(r){
console.log(r);
// ... other operations using current tab ...
});