На 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); })();
Отредактировано Andrey_Krropotkin (19-04-2019 23:29:19)
Отсутствует