2011-07-15 36 views
0

我有一個擴展,我正在工作,有一個「彈出」的putton在酒吧,
我訪問一個網站(例如google.com)按鈕被按下時,我在popup.html運行此代碼:Chrome擴展,Javascript:從地址欄獲取網址

window.addEventListener("load", windowLoaded, false); 

function windowLoaded() { 
    chrome.tabs.getSelected(null, function(tab) { 
    localStorage['url_in_address_bar']=tab.url; 
    }); 
} 

但不是拯救谷歌的地址,這樣可以節省它自己的地址是這樣的:"chrome://extensions/"

如何獲得它來保存最後的地址而不是自己?

+0

'chrome:// extensions /'是擴展管理頁面。你打開了嗎? – pimvdb

+0

是的,這是開放的...但在 – Ryan

+0

背後的幾個標籤再一次,你的腳本對我來說工作正常......如果你有開發工具打開,彈出不會重新加載。關閉開發工具,打開彈出窗口,然後檢查'localStorage'? – pimvdb

回答

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 == "[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)。當其他功能完成其任務(例如查找選定的選項卡)時,它將執行提供的功能。但與此同時,請求之後的代碼將定期執行。

+0

你能給我看看怎麼樣?我是新來的「回調函數」,雖然我理解異步部分 – Ryan

+0

在你的幫助下找出它!謝謝! – Ryan