免责声明:我是一个完整的javascript n00b,请保持温和。可能重复:
After calling chrome.tabs.query, the results are not available
popup.js:
var foo = '';
chrome.tabs.query({'active': true, 'windowId': chrome.windows.WINDOW_ID_CURRENT},
function(tabs){
foo = tabs[0].url;
}
);
document.getElementById("bar").innerHTML=foo;
这不起作用,因为foo未定义。我知道将document.getElementById移动到它运行的函数中,但关键是我想要foo引用我稍后可以在我的popup.js中使用的变量
答案 0 :(得分:1)
我从未使用过Chrome API ...但是看起来你的问题似乎是基本的JavaScript。
您需要在回调中设置#bar的innerHTML:
chrome.tabs.query({'active': true, 'windowId': chrome.windows.WINDOW_ID_CURRENT},
function(tabs){
document.getElementById("bar").innerHTML = tabs[0].url;
}
);
如果您不这样做,请参阅您提供的示例代码:
// 1. Create foo.
var foo = '';
// 2. Call the query function on chrome.tabs
chrome.tabs.query({'active': true, 'windowId': chrome.windows.WINDOW_ID_CURRENT},
function(tabs){
// 4. Set foo after query is done doing whatever.
foo = tabs[0].url;
}
);
// 3. Set the html of the element with id="bar" to what's in foo (which is empty right now)
document.getElementById("bar").innerHTML=foo;
编辑:我假设chrome.tabs.query是一个异步调用,这就是为什么它有一个回调。如果它是同步的,请忽略我的答案。