簡體   English   中英

強制退出瀏覽器時未保存Firefox首選項(XPCOM / javascript)

[英]Firefox preferences not saved when browser is force quit (XPCOM/javascript)

使用Firefox擴展程序。 我試圖從javascript設置首選項,並觀察一些奇怪的行為。

  • 無論何時設置首選項,都可以在about:config立即看到更改。 但是,如果將Firefox強制終止(使用Ctrl + C),則不會保存首選項。 (在我的個人資料中看不到prefs.js中的條目)
  • 每當我使用about:config切換選項(用於boolean)或使用標准的prefwindow prefpane來設置首選項時,即使我強制終止firefox,也將保存首選項。

如果正常關閉Firefox,一切正常。 但是我只是擔心,如果發生強制退出(例如操作系統關閉或用戶發送終止信號),那么用戶首選項將會丟失!

這是一個自舉插件,我在啟動時設置了默認首選項。 我有事件偵聽器來讀取用戶輸入,並設置用戶首選項。 例如:

const prefs = Cc["@mozilla.org/preferences-service;1"].getService(Ci.nsIPrefBranch);
prefs.setBoolPref("extensions.myextension.test.ffterminate", false);

我在這里做錯什么了嗎? 我應該使用存儲而不是首選項分支嗎?

編輯:在此上與Mozilla引發了一個錯誤: https ://bugzilla.mozilla.org/show_bug.cgi?id =981818

我在想您沒有在默認分支上設置它。

這是在默認分支上設置首選項的方式,因此,重置首選項時,它不會自行刪除,而是會使用此默認值。 我不知道為什么在瀏覽器上強制關閉其丟失的內容,但是嘗試在默認分支上進行設置:

Services.ps.getDefaultBranch('my_branch_name')['setBoolPref']('myprefname', false);

您可能只是在非默認分支上設置,如下所示:

Services.ps.getBranch('my_branch_name')['setBoolPref']('myprefname', false);

注意:如果在非默認分支上已經設置了值,則設置默認值不會更改首選參數的當前值,只有重置后,首選參數才會變為該默認值。 因此,當您將默認設置設為默認值時,請不要感到困惑。 它仍然在工作。 它實際上確實更改了它,右鍵單擊首選項,然后單擊重置以查看它跳到默認設置的值

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM