Изменить масштаб( Firefox 24 + )
Автор: bunda1
Версия: от 27.11.2017.
Описание: Kод создает в адресной строке кнопку которая показывает размер масштаба текущей страницы. Можно передвигать кнопку в адресной строке относительно других элементов строки изменяя в коде величину в строке margin-right: -1px;
Колесиком мыши на кнопке можно менять масштаб текущей страницы.
Левым кликом на кнопке можно переключить режим изменения масштаба - менять масштаб страниц или менять масштаб только текста на страницах, если переключена на менять только текст размер масштаба в адресной строке будет отображаться жирным шрифтом.
Средним кликом на кнопке можно переключить - единый масштаб для всех страниц или только для сайта, если переключена на единый масштаб для всех страниц - размер масштаба в адресной строке будет красного цвета.
Правым кликом на кнопке можно сбросить масштаб на 100%.
Использование: положите код в любую Custom Buttons кнопку, в инициализацию. Не обязательно создавать новую CB кнопку, можно использовать уже существующую.
// Кнопка для управления масштабом страницы в адресной строке, от 27.11.2017. .......................... (()=> { // Удалить из адресной строки FF51 стандартную кнопку масштаба .... var but = document.getElementById('urlbar-zoom-button'); if (but) but.style.display = "none"; // Создать в адресной строке кнопку масштаба .... var zoomButton = document.createElement("statusbarpanel"); var urlbarIcons = document.getElementById("urlbar-icons") || document.getElementById("page-action-buttons"); // FF57 urlbarIcons.insertBefore(zoomButton, urlbarIcons.lastChild); // перед последней кнопкой адресной строки addDestructor(()=> zoomButton.remove()); updateZoomButton(); zoomButton.id = "zoomButton"; zoomButton.setAttribute("context", "event.stopPropagation()"); zoomButton.style.cssText = "-moz-appearance: none; border: 0; margin-right: -1px;"; // Css стиль для кнопки масштаба zoomButton.tooltipText = "Л: Менять масштаб страницы или только текста\nС: Единый масштаб для всех страниц \nП: Сбросить масштаб на 100% "; // Отслеживать клики на кнопке масштаба .... 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) ); updateZoomButton(); } if ( e.button == 2 ) FullZoom.reset(); // сбросить масштаб }, false, zoomButton); // Менять масштаб колесиком мыши на кнопке масштаба .... addEventListener("DOMMouseScroll", e=> { e.detail > 0 ? FullZoom.reduce() : FullZoom.enlarge(); }, false, zoomButton); // Следим за изменением масштаба и запускаем обновление кнопки .... var str = "{ setTimeout(()=> { updateZoomButton() }, 50);"; var handleEvent = parseInt(Services.appinfo.version) > 33 ? FullZoom.handleEvent : FullZoom._handleMouseScrolled; var array = [FullZoom.reset, FullZoom.reduce, FullZoom.enlarge, ZoomManager.toggleZoom, 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,"{") ) }); }); // Показывать текущий масштаб страницы на кнопке и изменять цвет и шрифт отображения масштаба .... function updateZoomButton(e) { zoomButton.label = 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); } }; // Устанавливать единый масштаб для всех страниц если это разрешено в '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") ) { 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 (23-08-2014 16:36:20)
Отсутствует
Добавьте пожалуйста сброс до 100% по правому клику или по двойному.
Отсутствует
bunda1 пишет:
Левым кликом на кнопке можно переключить - менять масштаб страницы или только текста на странице(размер масштаба в адресной строке будет жирным шрифтом).
ПКМ и СКМ тоже
Отсутствует
Andrey_Krropotkin пишет:
Добавьте пожалуйста сброс до 100% по правому клику или по двойному.
Я сделал сброс до 100% по правому клику.
Добавлено 13-11-2011 15:59:39
mserv пишет:
bunda1 пишет:
Левым кликом на кнопке можно переключить - менять масштаб страницы или только текста на странице(размер масштаба в адресной строке будет жирным шрифтом).
ПКМ и СКМ тоже
Исправил. Спасибо что быстро находишь мои ошибки.
Отредактировано bunda1 (13-11-2011 16:00:04)
Отсутствует
bunda1
Пользуюсь вашей кнопкой Zoom2 Просматриваешь скажем форум, выставил 200% масштаб, переходишь на вторую страницу форума сбрасывает на 100%, тоже самое при открытии др. вкладки или новой страницы.
Можно ли сделать, чтобы отформатированный масштаб браузер сохранял на другие страницы?
Отсутствует
BBoxerb пишет:
Пользуюсь вашей кнопкой Zoom2 Просматриваешь скажем форум, выставил 200% масштаб, переходишь на вторую страницу форума сбрасывает на 100%
У меня такого не наблюдается, это на каком форуме? Кнопка устанавливает единый масштаб для сайта - под одним адресом, но не для новых страниц, которые находятся на других сайтах.
BBoxerb пишет:
Можно ли сделать, чтобы отформатированный масштаб браузер сохранял на другие страницы?
На все страницы? Мне кажется это будет очень не удобно. Я постоянно меняю масштаб для разных сайтов.
Можно зделать так.
about:config
browser.zoom.siteSpecific - false
Отредактировано bunda1 (17-11-2011 18:39:55)
Отсутствует
Изменить масштаб (Firefox 3.6 - 10)
Добавил новые возможности:
Теперь можно: cредним кликом на кнопке переключить - единый масштаб для всех страниц или только для сайта, если переключена на единый масштаб для всех страниц - размер масштаба в адресной строке будет подчеркнут.
Отредактировано bunda1 (17-11-2011 21:07:08)
Отсутствует
Была у меня ваша кнопка "Zoom2" я решил сделать еще одну кнопку "Изменить масштаб", но поскольку мне нужно чтобы масштаб сохранялся, а не откатывался на 100% я обе кнопки удалил, но в адресной строке масштаб остался
Щас я создал новую кнопку, масштаб выделяется ЛКМ, подчеркивается Средней кнопкой, откатывается до 100 ПКМ, но главное подчеркивание средней кнопкой не сохраняет масштаб
Отредактировано BBoxerb (18-11-2011 13:30:49)
Отсутствует
BBoxerb пишет:
но главное подчеркивание средней кнопкой не сохраняет масштаб
Точно есть такая проблема, самопроизвольный сброс на 100% ,тут надо подумать.
Но вроде решение есть.
Отсутствует
bunda1
А у меня просьба вместо подчёркивания сделать изменение цвета, например на синий. А то я уменьшил высоту адресной строки и у меня подчёркивание не видно. Возможно?А у меня просьба вместо подчёркивания сделать изменение цвета, например на синий. А то я уменьшил высоту адресной строки и у меня подчёркивание не видно. Возможно?
Отсутствует
mserv пишет:
bunda1
А черту приблизить ближе к цифре это возможно?
папробуй изменить в userChrome.css высоту для #ucjs_zoom_statuslabel
или измени в коде
на что то, например на
Отсутствует
Изменить масштаб (Firefox 3.6 - 10)
Исправил ошибки:
самопроизвольный сброс масштаба, если масштаб на странице изменялся расширением FireGestures или чем то подобным и если кнопка была переключена на единый масштаб для всех страниц.
Отсутствует
iluha-mai
Средним кликом на кнопке можно переключить - единый масштаб для всех страниц или только для сайта, если переключена на единый масштаб для всех страниц - размер масштаба в адресной строке будет подчеркнут.
Отсутствует
Изменить масштаб (Firefox 3.6 +) Изменить масштаб(Firefox 3.6 +)
Изменил: Теперь если кнопка переключена на единый масштаб для всех страниц - размер масштаба в адресной строке будет красного цвета.
Отредактировано bunda1 (20-05-2012 18:48:49)
Отсутствует
BBoxerb пишет:
Обновил код иниц. Нууу что-то у меня при открытии новой вкладки масштаб выделенный красным сбрасывает на 100%, скажем с 80-->100:rolleyes:
Так и должно быть, ты же включил единый масштаб для всех страниц = 100% 20-05-2012 17:47:57
Отредактировано bunda1 (11-06-2012 18:35:44)
Отсутствует
bunda1
Наверное что-то не так вставил, я правивльно понимаю, что если жирным черным то он должен сохранять старый масштаб для всех вкладок( скажем 80%) а с красным он сбрасывает на 100%?
Отредактировано BBoxerb (11-06-2012 14:42:33)
Отсутствует
BBoxerb пишет:
... я правивльно понимаю, что если жирным черным то он должен сохранять старый масштаб для всех вкладок( скажем 80%) а с красным он сбрасывает на 100%?
Нет не правильно:
Если жирным черным то для каждого сайта будет свой масштаб.
Если красным то будет единый масштаб для всех страниц, если включил красный на странице у который масштаб скажем 80% то у всех страниц теперь будет 80%. Но это можно любой момент изменить если колесиком мыши изменить масштаб текущей страницы и тогда у всех страниц теперь будет размер такой же как текущей страницы. Все просто.
Отредактировано bunda1 (11-06-2012 19:09:15)
Отсутствует
bunda1
А нельзя сделать, чтобы правило красного распространялось и на вкладки? При открытии новой вкладки он сбрасывает на 100%
В Огн.Лисе лично я открываю новые вкладки по максимуму, а новую страницу только тогда, когда вкладок накопится штук 20-ть
Отсутствует