Полезная информация

Вы можете получить техническую поддержку и просто поболтать в jabber-конференциях Mozilla Россия: support@conference.mozilla-russia.org — для решения проблем с программами Mozilla, talks@conference.mozilla-russia.org — для общения на свободные темы.

№22604-11-2018 22:51:27

broker
Участник
 
Группа: Members
Зарегистрирован: 23-06-2015
Сообщений: 98
UA: unknown 0.0

Re: [CB]Изменить масштаб

Мастер bunda1 почините кнопку на последней esr не работает.

Отсутствует

 

№22719-04-2019 23:06:42

Andrey_Krropotkin
Участник
 
Группа: Members
Зарегистрирован: 11-11-2011
Сообщений: 209
UA: Firefox 66.0

Re: [CB]Изменить масштаб

На 66.03 код вроде бы как работает, но не запоминает настройки - единый масштаб, постоянно сбрасывает к 100%

скрытый текст

Выделить код

Код:

// Кнопка для управления масштабом страницы в адресной строке. ..........................
(()=> {
   // Удалить из адресной строки FF51 стандартную кнопку масштаба ....
   var but = document.getElementById('urlbar-zoom-button');
   if (but) but.style.display = "none";
    
   // Создать в адресной строке кнопку масштаба ....
   var zoomButton = document.createElement("label");
   var urlbarIcons = document.getElementById("urlbar-icons") || document.getElementById("page-action-buttons"); // FF57
  // urlbarIcons.insertBefore(zoomButton, urlbarIcons.lastChild); // перед последней кнопкой адресной строки
  urlbarIcons.insertBefore(zoomButton, null);
  
   addDestructor(()=> zoomButton.remove());
      
   updateZoomButton(); 
   zoomButton.id = "zoomButton";
   zoomButton.setAttribute("context", "event.stopPropagation()");
   zoomButton.style.cssText = "-moz-appearance: none; border: 0; margin-right: -2px; margin-left: -1px;"; // Css стиль для кнопки масштаба   
   zoomButton.tooltipText = "Л: Менять масштаб страницы или только текста\n     Жирный - только текст\nС: Единый масштаб для всех страниц - Красный цвет\nП: Сбросить масштаб на 100% \nКолесиком: менять масштаб";
   
   
   // Показывать текущий масштаб страницы на кнопке и изменять цвет и шрифт отображения масштаба ....
   function updateZoomButton(e) {
      zoomButton.value = Math.round(ZoomManager.zoom*100) + "%"; 
       setTimeout(()=> {  
         zoomButton.style.fontWeight = ZoomManager.useFullZoom ? '' : 'bold';
         zoomButton.style.color = cbu.getPrefs("CB.zoom.allEvenly") ? "red" : "";
      }, 5);
      
      // запомнить текущий масштаб в 'about:config'
        if ( e == undefined ) { 
           try { window.clearTimeout(zoomButton.prefTimeout) } catch(e) {};
           zoomButton.prefTimeout = window.setTimeout(()=> {
              cbu.setPrefs("CB.zoom.Percent", ZoomManager.zoom.toFixed(2) )  
           }, 250);
           }   
   };
   
   
   // Отслеживать клики на кнопке масштаба ....           
   addEventListener("click", e=> {      
   
      if ( e.button == 0 ) ZoomManager.toggleZoom(); // переключить режим изминения масштаба
      
      if ( e.button == 1 ) { // единый масштаб для всех страниц
           cbu.isPref("CB.zoom.allEvenly", false);
           cbu.setPrefs("CB.zoom.allEvenly", !cbu.getPrefs("CB.zoom.allEvenly") );
           cbu.setPrefs("CB.zoom.Percent", ZoomManager.zoom.toFixed(2) );
           }

     if ( e.button == 2 ) FullZoom.reset(); // сбросить масштаб
               updateZoomButton(); 

   }, false, zoomButton);

         
   // Менять масштаб колесиком мыши на кнопке масштаба ....
   addEventListener("DOMMouseScroll", e=> {
      e.detail > 0 ? FullZoom.reduce() : FullZoom.enlarge();
   }, false, zoomButton);
           
 
   // Следим за изменением масштаба и запускаем обновление кнопки ....
   var hidden = Object.getOwnPropertyDescriptor(XULElement.prototype, "hidden");
    Object.defineProperty(but, "hidden", {
        configurable: true, enumerable: true, get: hidden.get.bind(but),
        set: val => {
            Components.stack.formattedStack.includes("LocationChange")
                || setTimeout(updateZoomButton, 50);
            return hidden.set.call(but, val);
        }
    });
    addDestructor(() => delete but.hidden);
   
    
   // Устанавливать единый масштаб для всех страниц если это разрешено в 'about:config' ....
   addEventListener("TabAttrModified", e=> {
      if ( e.target.linkedBrowser.currentURI.spec !== gBrowser.currentURI.spec ) return;
             
     // if ( cbu.getPrefs("CB.zoom.allEvenly") && content.location.protocol.startsWith("http") ) {
      if ( cbu.getPrefs("CB.zoom.allEvenly") ) {
           var value = cbu.getPrefs("CB.zoom.Percent");
           if ( ZoomManager.zoom.toFixed(2) == value ) return;

           setTimeout(()=> { 
              gBrowser.markupDocumentViewer[ZoomManager.useFullZoom ? 'fullZoom' : 'textZoom'] = value;
              updateZoomButton(e);   
           }, 0); 
           }      
      else 
           updateZoomButton(e);
                 
   }, true, gBrowser.tabContainer);   
})();  


Уважаемые bunda1, Dumby можете ли Вы починить для новых версий?

Отредактировано Andrey_Krropotkin (19-04-2019 23:29:19)

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2011 Mozilla Russia
Язык отображения форума: [Русский] [English]