您的代碼顯示了問題。 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 == "[email protected]")
{
//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 == "[email protected]")
{
//self.close();
chrome.tabs.create({url: '0_register.html'});
} else{
// self.close();
chrome.tabs.create({url: '1_options.html'});
}
});
}
回調函數是你提供的功能作爲另一個函數的參數(例如getSelected
)。當其他功能完成其任務(例如查找選定的選項卡)時,它將執行提供的功能。但與此同時,請求之後的代碼將定期執行。
'chrome:// extensions /'是擴展管理頁面。你打開了嗎? – pimvdb
是的,這是開放的...但在 – Ryan
背後的幾個標籤再一次,你的腳本對我來說工作正常......如果你有開發工具打開,彈出不會重新加載。關閉開發工具,打開彈出窗口,然後檢查'localStorage'? – pimvdb