Переключить скролбар через контекстное меню панелей инструментов(Firefox)
Автор: bunda1
Описание: Kод добавляет новый пункт в контекстное меню панелей инструментов: Скрыть скролбар который дает возможность скрыть или показать полосу прокрутки на всех новых страницах или после обновления уже открытых страниц.
Использование: положите код в любую Custom Buttons кнопку, в инициализацию. Не обязательно создавать новую CB кнопку, можно использовать уже существующую.

Выделить код

Код:

// Переключить скролбар через контекстное меню панелей инструментов .....................................................
(function() {
    // Стоп, если новый пункт меню уже существует ....
    if (document.getElementById("hideScrollbar")) return;
    
    // Oбъявляем переменные для всего кода .....
    var prefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService);
    var s = "CB.hideScrollbar";
    
    // Проверить наличие строк в about:config и создать если не существует ...................................................
    if ( !custombuttons.isPref(s) ) prefs.setBoolPref(s, false); 

    // Добавляем новый пункт в контекстное меню панелей инструментов .........................................................
    var menuitem = document.createElement("menuitem");
    menuitem.setAttribute("id", "hideScrollbar");
    menuitem.setAttribute("oncommand", "event.stopPropagation(); ToggleScrollbarPreferences(event)");
    // добавляем чекбокс(флажок) для нового пункта меню ....
    menuitem.setAttribute("type", "checkbox");
    menuitem.setAttribute("checked", custombuttons.getPrefs(s) );
    menuitem.setAttribute("autocheck", true);
    // текст нового пункта меню зависит от языка интерфейса ....
    menuitem.setAttribute("label", (prefs.getCharPref("general.useragent.locale") == "ru")? "Скрыть скролбар": "Hide scrollbar");
    // добавляем как последний пункт меню в контекстное меню панелей инструментов ....
    document.getElementById("toolbar-context-menu").appendChild(menuitem);
    
    // Функция переключает настройки в 'about:config' ........................................................................
    ToggleScrollbarPreferences = function(event) {
          custombuttons.setPrefs(s, !custombuttons.getPrefs(s));
          // ....
          ToggleScrollbarStyle(event); 
          };
          
    // Функция добавляет или удаляет стиль для скролбара на страницах выбор завысит от настройки в 'about:config' ............
    var ToggleScrollbarStyle = function(event) {
          var sss = Components.classes["@mozilla.org/content/style-sheet-service;1"]
                                                      .getService(Components.interfaces.nsIStyleSheetService);
          var str = 'html > scrollbar[orient=vertical], html > scrollbar[orient=horizontal] {visibility:collapse !important;}';
          var uri = makeURI('data:text/css,'+encodeURIComponent( str ));                                            
          // удалить стиль
          if ( !custombuttons.getPrefs(s) && sss.sheetRegistered(uri, sss.AGENT_SHEET) ) sss.unregisterSheet(uri, sss.AGENT_SHEET);
          // добавить стиль
          if ( custombuttons.getPrefs(s) ) sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET);
    };
    
    ToggleScrollbarStyle(event);
})();