我有一個Firefox擴展,實現了一堆可以從Firefox中的上下文菜單調用的小函數。我製作了一個首選項窗口,爲每個首選項顯示一個radiogroup,允許該功能顯示在Firefox主菜單中,顯示在由擴展程序創建的子菜單中,或隱藏。這對於每個擴展功能來說都是完全相同的,只改變以下內容:首選項ID,首選項名稱,被叫功能名稱和每個無線電組的標籤。是否可以爲每個函數創建包含這四個字符串的數組,然後動態定義所有的首選項,而不是爲每個首選項複製和粘貼相同的代碼?動態定義Firefox擴展首選項
我很確定可以動態地在我的偏好窗口中定義XUL。但是,我不確定使用pref()命令在默認文件夾中定義默認首選項(我不確定如何訪問擴展中其他位置定義的字符串)。我也不確定是否可以動態定義preferences.xul文件的定義,或者是否需要鍵入它們。
另外,你認爲這是個好主意還是壞主意?我認爲這會使添加/刪除功能更容易。
感謝您使用偏好設置API設置偏好的建議。我會嘗試。在回覆之前,我已經使用JSON將包含首選項的數組保存爲字符串,但能夠將它們保存爲單獨的首選項應該更清晰。 –
使用變更後的配置文件通知來初始化首選項是否很重要?我的擴展有一個init()函數,由一個「加載」事件監聽器調用,所以我正在考慮將首選項設置在那裏。我將不得不詳細瞭解如何執行更改後的配置文件通知。 –
我使用我的init()函數實現了我的動態首選項,並且所有內容似乎都能正常工作。只是爲了勾畫出以防萬一任何人在稍後看到:我將所有首選項存儲爲存儲爲主擴展對象中字段的字符串數組。然後我編寫了一個函數來循環這個數組,併爲每個字符串創建所有必要的XUL,並使用該字符串形成id,並將prefpane的onpaneload設置爲該函數。另一個函數遍歷數組,並在init()中將每個pref設置爲默認值(如果未設置)。 –