我有一个我正在研究的扩展,它在栏上有一个“弹出式”putton,
我访问了一个网站(例如google.com)按下按钮,我在popup.html中运行此代码:
window.addEventListener("load", windowLoaded, false);
function windowLoaded() {
chrome.tabs.getSelected(null, function(tab) {
localStorage['url_in_address_bar']=tab.url;
});
}
但不是保存Google地址,而是保存自己的地址,如下所示:"chrome://extensions/"
。
如何保存最后一个地址而不是自己?
答案 0 :(得分:2)
您的代码显示了问题。 getSelected
会将标签返回为回调,这意味着当Chrome找到所选标签时会执行回调。这是异步,稍后执行:
window.addEventListener("load", windowLoaded, false);
function windowLoaded() {
// 1) request selected tab
chrome.tabs.getSelected(null, function(tab) {
localStorage['url_in_address_bar']=tab.url; // 3) selected tab is stored
});
}
// 2) a tab is created
var saved_email = localStorage['blocker_user_email'];
if (saved_email === undefined || saved_email == "a@a.com")
{
//self.close();
chrome.tabs.create({url: '0_register.html'});
} else{
// self.close();
chrome.tabs.create({url: '1_options.html'});
}
您可以通过将代码的第二部分放入回调函数来解决它:
window.addEventListener("load", windowLoaded, false);
function windowLoaded() {
chrome.tabs.getSelected(null, function(tab) {
localStorage['url_in_address_bar']=tab.url;
var saved_email = localStorage['blocker_user_email'];
if (saved_email === undefined || saved_email == "a@a.com")
{
//self.close();
chrome.tabs.create({url: '0_register.html'});
} else{
// self.close();
chrome.tabs.create({url: '1_options.html'});
}
});
}
回调函数是您作为另一个函数的参数提供的函数(例如getSelected
)。当其他功能完成其任务(例如,查找选定选项卡)时,它将执行提供的功能。然而,与此同时,请求之后的代码将定期执行。