此语法不起作用(urlToUse设置为undefined而不是当前url):
var urlToUse;
chrome.tabs.query({'active': true, 'windowId': chrome.windows.WINDOW_ID_CURRENT}, function(tabs){
urlToUse= tabs[0].url;
});
$('#itemsList').append(urlToUse)
}
尽管如此(urlToUse设置为当前标签页面)。唯一的区别是最后一行现在位于回调函数中:
var urlToUse;
chrome.tabs.query({'active': true, 'windowId': chrome.windows.WINDOW_ID_CURRENT}, function(tabs){
urlToUse= tabs[0].url;
$('#itemsList').append("<p>"+urlToUse+"</p>");
});
但是,基于this堆栈溢出示例(链接上的#5,粘贴在下面),代码应该可以工作:
var a = 1;
var six = (function() {
var a = 6;
return function() {
// JavaScript "closure" means I have access to 'a' in here,
// because it is defined in the function in which I was defined.
alert(a);
};
})();
我的理由是变量urlToUse是在定义回调的函数中定义的,因此javascript闭包适用。所有这些都在$(document).ready(function(){here});
的else语句中