0
我有一個Chrome擴展,允許用戶登錄到系統。當用戶未登錄時,我希望在打開擴展程序時顯示默認頁面,但如果它們已經登錄,我希望在打開擴展程序時顯示不同的彈出窗口。Chrome擴展 - 更改彈出窗口
我現在通過JavaScript實現了這一點,但有時候會有時間延遲。在腳本執行之前,原始頁面會立即閃爍並切換到其他頁面。有沒有更好的方法來實現這一點?
我有一個Chrome擴展,允許用戶登錄到系統。當用戶未登錄時,我希望在打開擴展程序時顯示默認頁面,但如果它們已經登錄,我希望在打開擴展程序時顯示不同的彈出窗口。Chrome擴展 - 更改彈出窗口
我現在通過JavaScript實現了這一點,但有時候會有時間延遲。在腳本執行之前,原始頁面會立即閃爍並切換到其他頁面。有沒有更好的方法來實現這一點?
您應該查看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"});
});
工作過。我從來沒有考慮過使用活動頁面和本地存儲來跟蹤狀態 - 謝謝! – 2015-04-02 15:14:24