除了 Mozilla Taiwan 討論區: 如何刪除在 about:config 所建立的資料 提到的方法外,以 bookmarklet 協助刪除也是個選擇。

將 bookmarklet 加進書籤 → about:config 刪除偏好項目

使用步驟:

  1. 備份 pref.js(保險起見。刪除跟重設不同,砍掉就真的沒救了!)
  2. 由網址列進入 about:config(在一般網頁不可執行)
  3. 執行 bookmarklet,會詢問要刪除的分支(分支指的是 nsIPrefBranch),可以輸入:

    輸入要刪除的分支

    • 整個分支

      例如輸入 browser.startup 會刪除 browser.startup.homepage 等項目。可以將點(.)也輸入而變成 browser.startup.,效果一樣。
      註:與 about:config 的篩選條件不同,輸入 browse 或 browser.startup.h 皆無法找到前述項目。

    • 單一項目

      例如輸入 browser.startup.homepage 就會刪掉 browser.startup.homepage 這個項目。

  4. 出現確認畫面。若項目很多(超過 50 個)會再確認一遍。

    確認要刪除的項目

  5. 出現「已執行」訊息。不過我沒有真的檢查是否已刪除,需要重新載入才知道成功與否。

    已執行


原始碼拆解:

javascript:
var v = "", b = null;
try {
  b = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService);
}
catch(e) {
  alert("錯誤:無法取得 Firefox 服務。");
}
if(b) {
  while( v == "" ) {
    v = prompt("請輸入要刪除的擴充套件分支:\n(例如「megaupload.toolbar.」)","");
  }
  if( v != null ) {
    var str = "" ;
    var dot = (v.substr(-1)==".");
    var count = 0;
    b = b.getBranch(v);
    b.getChildList("",{}).forEach(function(i) {
      if( dot || i[0]=="." || i=="" ) {
        str += ( "\t" + v + i + "\n" );
        count++;
      }
    });
    if(count==0) {alert("沒有符合的項目。");}
    else if( confirm(count+" 個項目將被刪除:\n" + str + "\n") ) {
      if( count<=50 || confirm("(項目超過 50 個)確定要刪除嗎?") ) {
        b.deleteBranch("");
        alert("已執行。");
      }
    }
  }
}
void 1