2012-06-21 155 views
0

我遇到了由函數設置的狀態欄標籤值的問題。我必須在用戶關閉瀏覽器之前保存這個值,恢復它並再次運行該函數。 我認爲這是可能的唯一方法是使用cookie。 我發現2個有趣的代碼在MDN: 對於設置cookie:保存並恢復Firefox擴展的值

var ios = Components.classes["@mozilla.org/network/io-service;1"].getService(Components.interfaces.nsIIOService); 
    var cookieUri = ios.newURI("http://www.yourplacewhereyouwanttosetthecookie.com/", null, null); 
    var cookieSvc = Components.classes["@mozilla.org/cookieService;1"].getService(Components.interfaces.nsICookieService); 

    cookieSvc.setCookieString(cookieUri, null, "your_key=your_value;", null); 

,並閱讀他們:

var ios = Components.classes["@mozilla.org/network/io-service;1"] 
       .getService(Components.interfaces.nsIIOService); 
    var uri = ios.newURI("http://www.google.com/", null, null); 
    var cookieSvc = Components.classes["@mozilla.org/cookieService;1"] 
         .getService(Components.interfaces.nsICookieService); 
    var cookie = cookieSvc.getCookieString(uri, null); 

問題是,我不明白這一點。在哪裏我可以把我的狀態欄的標籤? 「your_key = your_value」是什麼意思?我如何使用閱讀代碼恢復這個值?爲什麼我必須在「newURI」設置一個互聯網地址? 對不起,但我還在學習它:)。會很高興,如果我得到一些幫助。 非常感謝!

回答

1

它可能會更好地使用首選項來保存該信息。向您的默認偏好設置js文件添加首選項,例如pref("extensions.myextension.thelabelvalue", "whatever"); https://developer.mozilla.org/en/Building_an_Extension#Defaults_Files

然後加入Components.utils.import("resource://gre/modules/Services.jsm");到主javscript文件https://developer.mozilla.org/en/JavaScript_code_modules/Services.jsm

的頂部,然後你可以使用set /到這裏列出的偏好方法:https://developer.mozilla.org/en/XPCOM_Interface_Reference/nsIPrefBranch

例如

let myPrefs=Services.prefs.getBranch("extensions.myextension.") 
myPrefs.setCharPref('thelabelvalue', text_value_from_label); 
myPrefs.getCharPref('thelabelvalue');