Vitaliy977
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Код: // Кнопка для управления масштабом страницы в адресной строке (()=> { // Удалить из адресной строки FF51 стандартную кнопку масштаба .... var but = document.getElementById("urlbar-zoom-button"); if (but) but.style.display = "none"; // Создать в адресной строке кнопку масштаба .... var urlbarIcons = document.getElementById("urlbar-icons") || document.getElementById("page-action-buttons"); if (!urlbarIcons) return; var zoomButton = document.createElement("statusbarpanel"); urlbarIcons.insertBefore(zoomButton, urlbarIcons.lastChild); // перед последней кнопкой адресной строки addDestructor(()=> zoomButton.remove()); updateZoomButton(); zoomButton.id = "Zoom-Button"; zoomButton.style.cssText = "-moz-appearance: none !important; border: none !important; margin: 0 !important; padding: 0 !important;"; // Css стиль для кнопки масштаба zoomButton.tooltipText = "Л: Менять масштаб страницы или только текста\nС: Максимально увеличить масштаб\nП: Сбросить масштаб на 100% "; // Отслеживать клики на кнопке масштаба .... addEventListener("click", e=> { if ( e.button == 0 ) ZoomManager.toggleZoom(); // переключить режим изминения масштаба else if ( e.button == 1 ) { if (FullZoom.zoom) FullZoom.zoom(ZoomManager.MAX); else ZoomManager.zoom = ZoomManager.MAX; updateZoomButton(); } else if ( e.button == 2 ) { // сбросить масштаб FullZoom.reset(); } }, false, zoomButton); addEventListener("contextmenu", e=> { e.preventDefault(); }, true, zoomButton); // Менять масштаб колесиком мыши на кнопке масштаба .... addEventListener("DOMMouseScroll", e=> { if (e.detail > 0) FullZoom.reduce(); else FullZoom.enlarge(); }, false, zoomButton); // Следим за изменением масштаба и запускаем обновление кнопки .... var evalcode = () => { window.removeEventListener("MozAfterPaint", evalcode, false); var str = "{ setTimeout(()=> { updateZoomButton(); }, 50);"; var array = [FullZoom.reset, FullZoom.reduce, FullZoom.enlarge, FullZoom.handleEvent]; array.forEach(func=> { setTimeout(()=> { eval( (func.toString().replace("_", ".").match(/function ([^(]*)\(/)[1] + " = " + func.toString().replace("{", str)) );}, 50); }); addDestructor(()=> { array.forEach(func=> { eval( (func.toString().replace("_", ".").match(/function ([^(]*)\(/)[1] + " = " + func.toString()).replace(str,"{") ); }); }); }; window.addEventListener("MozAfterPaint", evalcode, false); // Показывать текущий масштаб страницы на кнопке .... function updateZoomButton() { zoomButton.label = Math.round(ZoomManager.zoom*100) + "%"; } addEventListener("TabAttrModified", e=> { if ( e.target.linkedBrowser.currentURI.spec !== gBrowser.currentURI.spec ) return; setTimeout(()=> { updateZoomButton(); }, 100); }, false, gBrowser.tabContainer); addEventListener("TabSelect", e=> { if ( e.target.linkedBrowser.currentURI.spec !== gBrowser.currentURI.spec ) return; setTimeout(()=> { updateZoomButton(); }, 100); }, false, gBrowser.tabContainer); })(); |
|