2015-04-02 137 views
0

我有一個Chrome擴展,允許用戶登錄到系統。當用戶未登錄時,我希望在打開擴展程序時顯示默認頁面,但如果它們已經登錄,我希望在打開擴展程序時顯示不同的彈出窗口。Chrome擴展 - 更改彈出窗口

我現在通過JavaScript實現了這一點,但有時候會有時間延遲。在腳本執行之前,原始頁面會立即閃爍並切換到其他頁面。有沒有更好的方法來實現這一點?

回答

2

您應該查看chrome.browserAction API。

具體做法是:

chrome.browserAction.setPopup(object details)

設置當用戶點擊瀏覽器操作的圖標來打開一個彈出式的HTML文檔。

因此,設置你的彈出窗口,你會這樣稱呼它:

chrome.browserAction.setPopup({popup: "logged_in.html"}); 

當你理解了用戶登錄,您可以做到這一點;但是,當擴展重新啓動時,您可能需要恢復此狀態。要做到這一點,您應該保存您在永久存儲器中登錄(或退出)的事實,並在初始化時調用此函數。 event script是一個很好的選擇。

// wherever you can do this in your code 
function login_success() { 
    /* ... */ 
    chrome.storage.local.set({logged_in: true}); 
    chrome.browserAction.setPopup({popup: "logged_in.html"}); 
} 

function login_failure() { 
    /* ... */ 
    chrome.storage.local.set({logged_in: false}); 
    chrome.browserAction.setPopup({popup: "default.html"}); 
} 

// This goes into eventPage.js and executes once on extension load 
chrome.storage.local.get("logged_in", function(data) { 
    if(data.logged_in) 
    chrome.browserAction.setPopup({popup: "logged_in.html"}); 
}); 
+0

工作過。我從來沒有考慮過使用活動頁面和本地存儲來跟蹤狀態 - 謝謝! – 2015-04-02 15:14:24

相關問題