2014-07-05 120 views
0

我有一個谷歌瀏覽器擴展程序可以從一個按鈕訪問。擴展名應該「啓動」某些內容,然後當再次點擊時,它應該「停止」。因此,它必須識別其當前狀態(並根據狀態呈現不同的彈出窗口)。谷歌瀏覽器擴展程序:切換開/關模式

有沒有辦法跟蹤這個全局標誌或變量?

我目前的manifest.json,剛剛展示了一個簡單彈出(國有#1的對話):

{ 
    "name": "Test", 
    "version": "1.0", 
    "description": "Test", 
    "manifest_version": 2, 
    "browser_action": { 
    "default_icon": "Test.png", 
    "default_popup": "popup1.html" 
    } 
} 

文件「popup1.html」僅僅是一個帶有OK的形式按鈕頁面。點擊確定按鈕後,它會將此全局狀態變量設置爲ON,並且下一個擴展按鈕單擊將啓動不同的頁面。謝謝

+0

嗨,問題已解決? – Chickenrice

+0

是的,已解決。謝謝 –

回答

1

當您嘗試打開新的彈出窗口時,全局變量將被重新初始化。 「localStorage」允許擴展在客戶端設備上保存數據。它現在只支持鍵值映射數據,例如localStorage.currentState =「開始」。

當用戶打開彈出對話框時,可以使用localStorage來保存按鈕狀態並相應地更新按鈕狀態。

HTML

<!--default status is start--> 
<button id="toggle-btn">ON</button> 

JS

$(function(){ 
    //default value is "start" 
    var currentState = localStorage.currentState || "start"; 
    //cache button DOM element reference 
    var $toggleBtn = $("#toggle-btn"); 

    //update button status 
    if(currentState==="stop"){ 
     $toggleBtn.text("OFF"); 
    } 

    //register button click handler 
    $toggleBtn.click(function(){ 
     if(currentState==="start"){ 
      $toggleBtn.text("OFF"); 
      localStorage.currentState="stop"; 
     } 
     if(currentState==="stop"){ 
      $toggleBtn.text("ON"); 
      localStorage.currentState="start"; 
     } 
    }); 
}); 

BTW,您可以使用瀏覽器的開發工具(在資源選項卡),以檢查是否如預期的數據存儲。

+0

'localstorage'只會*每域*字,並且不會在瀏覽器中全局保存切換狀態。 – vsync