Изменить масштаб (Firefox 3.6 +) 13-11-2011 02:51:31
Исправил ошибки:
Самопроизвольный сброс масштаба в новом окне.
Уменьшил потребление ресурсов кодом кнопки.
Убрал лишний код.
Добавил в исключения для единого масштаба все страницы about: и страницу Fast Dial
Отредактировано bunda1 (08-07-2012 18:26:01)
Отсутствует
Cнова я
Как-то странно, открываешь новую вкладку, масштаб сохраняется.
Но часто бывает, что через скажем минуту, масштаб страницы сжимается до крошечного
Приходится кликать на 100%.
Не пойму, это оттого, что у меня другие кнопки на масштаб установлены, в частности твоя, которая меняет мин. размер шрифта с 12 на 24?
Вставлял код/редактировал кнопку несколько раз, не помогает.
Ничего такого не замечал?
Отсутствует
Cнова я
Как-то странно, открываешь новую вкладку, масштаб сохраняется.
Но часто бывает, что через скажем минуту, масштаб страницы сжимается до крошечного
Приходится кликать на 100%.
Не пойму, это оттого, что у меня другие кнопки на масштаб установлены, в частности твоя, которая меняет мин. размер шрифта с 12 на 24?
Вставлял код/редактировал кнопку несколько раз, не помогает.
Ничего такого не замечал?
Если я правильно понял у тебя самопроизвольный уменьшается масштаб ?
Кнопка Наименьший размер шрифта вряд ли виновата.
Такое возможно если использовать CB кнопки или расширения которые использует жесты мыши как расширения FireGestures, ты такие используешь ?
Не пойму, это оттого, что у меня другие кнопки на масштаб установлены
Какие кнопки ?
Отсутствует
bunda1
Ты мне сделал кнопку которая меняет миним. размер шрифта с одного на другое.
Самопроизвольно сжимается масштаб походу из-за мыши (обычная мышь Логитек о расширениях Firegestus даже не слышал что это?) и когда средняя кнопка мыши в режиме "КРАСНЫЙ-выделенный"
Я сейчас пользуюсь режимом ЧЕрный-Выделенный, но каждый раз когда я открываю новую вкладку он сбрасывает на 100%
Зато в режиме Черного-выделенного не сжимает самопроизвольно масштаб
(Я уже грил я открываю вкладки а не новые страницы, новые страницы открываю когда вкладок уже открыто много)
Отсутствует
При открытии новых окон не сохраняется масштаб, как исправить?
У меня такой баг не наблюдается. Когда ты устанавливал или обновлял кнопку? Я уже исправлял такой баг 06-07-2012 21:38:56
Отсутствует
После сегодняшнего обновления в масштаб меняет, а отображает постоянно 100%.
Да в коде были ошибки я их исправыл но код все равно не работает как надо и старый код тоже. Похоже на Nightly сломали:
eval("FullZoom.onLocationChange = " + FullZoom.onLocationChange.toString().replace(/}$/, __cmd));
Добавлено 27-05-2013 21:03:48
Буду думать
Добавлено 27-05-2013 21:13:28
Ну вроде исправил: Изменить масштаб( Firefox 3.6 + )
Отредактировано bunda1 (27-05-2013 21:13:28)
Отсутствует
bunda1
В режиме "менять масштаб страниц" ошибка осталась. С той лишь разницей, что отображается ранее установленный масштаб.
Отсутствует
Если я правильно понял то после переключения на режим "менять масштаб страниц" переключаясь на другие сайты масштаб меняется но на кнопке отображается ранее установленный масштаб.
Я такой глюк на Nightly не наблюдаю и вроде такое невозможно
Что пишет консоль ошибок ?
Отредактировано bunda1 (30-05-2013 18:40:46)
Отсутствует
bunda1
Да правильно понял. Именно так всё и происходит, правда с небольшим уточнением , как оказалось, если менять масштаб на кнопке, то всё работает, это у меня не меняется, если пользуюсь жестами. Так что вопрос снимается, буду с FireGestures разбираться.
Отсутствует
Увеличить масштаб:
Уменьшить масштаб:
Отсутствует
bunda1
В , если переключить режим отображения страницы менять масштаб страницы/только текст, а затем ПКМ открыть любую ссылку на странице, то дополнительно открывается ещё две вкладки и их колличество прибавляется после каждого переключения.
Отсутствует
bunda1
В , если переключить режим отображения страницы менять масштаб страницы/только текст, а затем ПКМ открыть любую ссылку на странице, то дополнительно открывается ещё две вкладки и их колличество прибавляется после каждого переключения.
Ты уверен, ни какой связи с открытием ссылок на странице не должно быть. Может попробуй:
// Кнопка для управления масштабом страницы в адресной строке, от 30.11.2013. ................................ (function () { // Создать в адресной строке кнопку масштаба .... var zoomButton = document.createElement("statusbarpanel"); var urlbarIcons = document.getElementById("urlbar-icons"); urlbarIcons.insertBefore( zoomButton, urlbarIcons.lastChild ); // перед первой иконкой адресной строки addDestructor(function() { urlbarIcons.removeChild( zoomButton ) }); updateZoomButton(); zoomButton.id = "zoomButton"; zoomButton.style.cssText = "-moz-appearance: none; border: 0; margin-right: -20px;"; // Css стиль для кнопки масштаба zoomButton.tooltipText = "Л: Менять масштаб страницы или только текста\nС: Единый масштаб для всех страниц \nП: Сбросить масштаб на 100% "; // Отслеживать клики на кнопке масштаба .... addEventListener("click", function(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 ) { e.preventDefault(); FullZoom.reset() }; // сбросить масштаб }, false, zoomButton ); // Менять масштаб колесиком мыши на кнопке масштаба .... addEventListener("DOMMouseScroll", function(e) { e.detail > 0 ? FullZoom.reduce() : FullZoom.enlarge(); }, false, zoomButton ); // Следим за изменением масштаба и запускаем изменения отображения масштаба на кнопке или установку единого масштаба .... var str = "updateZoomButton(); $&";// var array = [FullZoom.reset, FullZoom.reduce, FullZoom.enlarge, ZoomManager.toggleZoom, FullZoom._handleMouseScrolled]; array.forEach(function( func ) { eval( (func.toString().match(/function ([^(]*)\(/)[1] + " = " + func.toString().replace(/}$/, str)).replace('_', '.') ) }); addDestructor(function() { array.forEach(function( func ) { eval( (func.toString().match(/function ([^(]*)\(/)[1] + " = " + func.toString()).replace('_', '.') ) }); }); // Показывать текущий масштаб страницы на кнопке и изменять цвет и шрифт отображения масштаба .... function updateZoomButton(e) { zoomButton.label = Math.round(ZoomManager.zoom*100) + "%"; setTimeout(function() { zoomButton.style.fontWeight = ZoomManager.useFullZoom ? '' : 'bold'; zoomButton.style.color = cbu.getPrefs("CB.zoom.allEvenly") ? "red" : ""; }, 5); if ( e == undefined ) cbu.setPrefs("CB.zoom.Percent", ZoomManager.zoom.toFixed(2) ) }; // Устанавливать единый масштаб для всех страниц если это разрешено в 'about:config' .... addEventListener("TabAttrModified", function(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(function() { gBrowser.markupDocumentViewer[ZoomManager.useFullZoom ? 'fullZoom' : 'textZoom'] = value; updateZoomButton(e); }, 0) } else updateZoomButton(e); }, true, gBrowser.tabContainer ); })();
Отредактировано bunda1 (30-11-2013 22:52:34)
Отсутствует
Ты уверен, ни какой связи с открытием ссылок на странице не должно быть.
Конечно уверен, несколько раз пробовал.
Может попробуй:
Что-то не то, все кнопки пропали, которые там были вместе с Масштабом.
Виноват, видно неправильно вставил. Всё нормально работает, а главное так оперативно.
Спасибо!!!
Отредактировано voqabuhe (30-11-2013 23:12:55)
Отсутствует
Я пользуюсь кнопкой с этого форума, не могу даже сказать точное название. Вот её код
this.tooltipText = "[L=Zoom+ |M=Page/Text |R=Zoom-]"; var prefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Ci.nsIPrefBranch); var TextIcon = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACQklEQVQ4jaWSzUtUYRTGf+97rzM6V22YVBQJa1GbPjCiIMJFzaJNYosiiSAooV0ryWW7Nv0DiYXRJnAVtgqMaBEEFShJovmRM43jfDsfd+aO9973bWVIjBZ0ls/znIdzznPgP0vsRYxPvt/KFUqVRHLLS6RE36sXtxpqZSPwZP/A1aagdSBkRXqlGe7bTJcxgkev/LPB9ZsPxoslh0zOJpkqkUiWsLoHXzfSmo3AuhfsysYKxBNFFpezlIoFlG8DdADZfScYvv1oJpO1WVjK8PHTUj6+vpJWfhmUS0vn0Nu/rnDoyOmoXd0mnamQXH1+w9l69xAMhNGMGew5ta9B/5nLI0ppao6HXd0GJzbjVuafSLMVabQjDItg+OLTPQ0Gr41O2NVtsjmbjdiX6R3crS5PC9mMkEECbSfuNjTo7Dzc79Q98oUqyXSZaurl0A5XTU0NmaaJECZCGBjNx0Z2uN/PcX9sKleuycjc/CbLqzHUdg7QCCOENCyQAdAK7dsor0xl45mAXTEWSkS+LiRZWVnEq62h3C0QAmm0Icx2pBFCyABaK7SuA1Y/2LMC4PylsZlivScaj33HrXzDKX2+gxZ9SImUzSADKF/9DIXPTiAkWnto38k7+TcHTYB0qTOaSf/ArS5Ttxen8cuTAChQuw7m1rqGjUBHFHzQKgIgWiIXRptazz32amu4tTXcylwPsPln3jsVDA9orV3QPtqrfRBW772KcuIVt570lJtvVfX18F7NAKZ1fBbtd2vtOdKw+n4B6skL1gRzZQAAAAAASUVORK5CYII='; var PageIcon = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAwElEQVQ4jd3RMWpCQRSF4S/iBtyCELHW1sIV6ALiRnQH4hJ0ByF2Ym8aG1Ml8Ji3ArXRDZhUA+bx3qCWHjgw3Jn57+XcF1fq0JXQF7vUvYxw4bfKGWHO4mFA9AfLJCAjdOhG9+jPWVxDmrSSgLIGGz4jYMwEaslQCtqyLdbuAgwYxvOJM9SrHscRoUFjwLDFKwTy97Igb93CG6P4p3KCQF6sHdhPma1YJwGBvF22phLdFeKTAv6F+MP3gf2R462AP7hdbq8C1bDsAAAAAElFTkSuQmCC'; if(prefs.getBoolPref("browser.zoom.full")) this.image = PageIcon; else this.image = TextIcon; this.leftclick = function(e) { document.getElementById("cmd_fullZoomEnlarge").doCommand(); } this.midclick = function (evt){ if(prefs.getBoolPref("browser.zoom.full")) { prefs.setBoolPref("browser.zoom.full", false); this.image = TextIcon; ucjs_zoom.updateZoom(); } else{ prefs.setBoolPref("browser.zoom.full", true); this.image = PageIcon; ucjs_zoom.updateZoom(); } }; this.rightclick = function(event) { document.getElementById("cmd_fullZoomReduce").doCommand(); }; this. gQuot = {}; this. gQuot. __proto__ = custombuttons. gQuot; this. gQuot. dcDelay = 0; this. setAttribute ('onclick', 'this.gQuot.mHandler(event, this)'); //Zoom+ ........................................ var ucjs_zoom = { _TAGET_ID: "page-report-button", // Цвет и знаков(default: представляющая режим масштабирования) _ZOOM_MODE: [ { txt: "\Full Zoom", color: "false", font: "font-weight: normal ;" }, // Полный зум, черный { txt: "\Zoom", color: "true", font: "font-weight: bold;" } ], // Масштаб текста синий //Инициализация init: function() { // Zoom var _cmd = "ucjs_zoom.updateZoom(); $&"; // toggleZoom eval("ZoomManager.toggleZoom = " + ZoomManager.toggleZoom.toString().replace(/}$/, _cmd)); // reset eval("FullZoom.reset = " + FullZoom.reset.toString().replace(/}$/, _cmd)); // enlarge eval("FullZoom.enlarge = " + FullZoom.enlarge.toString().replace(/}$/, _cmd)); // reduce eval("FullZoom.reduce = " + FullZoom.reduce.toString().replace(/}$/, _cmd)); // onLocationChange eval("FullZoom.onLocationChange = " + FullZoom.onLocationChange.toString().replace(/}$/, _cmd)); // _handleMouseScrolled _cmd = "setTimeout(ucjs_zoom.updateZoom, 0); $&"; eval("FullZoom._handleMouseScrolled = " + FullZoom._handleMouseScrolled.toString().replace(/}$/, _cmd)); // Zoom Создание панели var zoomPanel = document.createElement("statusbarpanel"); zoomPanel.setAttribute("id", "ucjs_zoom_statuslabel"); zoomPanel.setAttribute("context", "ucjs_zoom-context"); var targetPanel = document.getElementById(this._TAGET_ID); targetPanel.parentNode.insertBefore(zoomPanel, targetPanel.nextSibling); // Zoom Колесико прокрутки на панели zoomPanel.addEventListener("DOMMouseScroll", function(event){ if (event.detail > 0) FullZoom.reduce(); else FullZoom.enlarge(); }, false); //Zoom Reset zoomPanel.addEventListener("click", function(){document.getElementById("cmd_fullZoomReset").doCommand()}, true); }, // Чтобы изменить значение масштаба для определения количества set_Zoom: function(n) { var markupDocumentViewer = getBrowser().markupDocumentViewer; if (!markupDocumentViewer) return; if (ZoomManager.useFullZoom) { if (markupDocumentViewer.textZoom != 1) markupDocumentViewer.textZoom = 1; if (markupDocumentViewer.fullZoom != n) markupDocumentViewer.fullZoom = n; } else { if (markupDocumentViewer.textZoom != n) markupDocumentViewer.textZoom = n; if (markupDocumentViewer.fullZoom != 1) markupDocumentViewer.fullZoom = 1; } ucjs_zoom.updateZoom(); return n; }, // Обновить статус кнопки updateZoom: function(){ // Кнопка для обновления статуса var Zoom = document.getElementById("ucjs_zoom_statuslabel"); Zoom.setAttribute("label", Math.floor((ZoomManager.zoom + 0.005) * 100) + "%"); Zoom.setAttribute("tooltiptext", ucjs_zoom._ZOOM_MODE[ZoomManager.useFullZoom? 0: 1].txt); Zoom.setAttribute("ZoomStyle", ucjs_zoom._ZOOM_MODE[ZoomManager.useFullZoom? 0: 1].color); Zoom.setAttribute("style", ucjs_zoom._ZOOM_MODE[ZoomManager.useFullZoom? 0: 1].font); } }; //Запускаем функцию // не запускаем функцию, если функция уже выполнялась if (!document.getElementById("ucjs_zoom_statuslabel")) ucjs_zoom.init(); //image Change Size....................................... (function imageChangeSize(){ // выходим, если функция уже выполнялась if (document.getElementById("imagechangesize")) return; const MAGNIFICATION = 2; const MAX_MAGNIFICATION = MAGNIFICATION * 8; const MIN_MAGNIFICATION = MAGNIFICATION / 8; const ZOOM_ATTR = "jsa-zoom"; const kXULNS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"; var contextMenu = document.getElementById("contentAreaContextMenu"); var separator = document.getElementById("context-sep-properties"); var eventTarget = null; var menu = document.createElementNS(kXULNS, "menu"); menu.id = "imagechangesize"; var locale = Components.classes["@mozilla.org/preferences-service;1"] .getService(Components.interfaces.nsIPrefBranch) .getCharPref("general.useragent.locale"); menu.setAttribute("label", locale.indexOf("ru") == -1 ? "Image zoom" : "Изменить размер"); menu.setAttribute("accesskey", "i"); menu.hidden = true; contextMenu.insertBefore(menu, separator); var menuPopup = document.createElementNS(kXULNS, "menupopup"); menu.appendChild(menuPopup); var lst = [ { label:"\Zoom (+)", command:zoomIn }, { label:"\Zoom (-)", command:zoomOut }, { label:"\Zoom (0)", command:original } ]; for(var i = 0, m; m = lst[i]; i++){ var menuItem = document.createElementNS(kXULNS, "menuitem"); menuItem.setAttribute("label", m.label); if ("accesskey" in m) menuItem.setAttribute("accesskey", m.accesskey); menuItem.addEventListener("command", m.command, false); menuItem.id = "image-change-size-" + m.label.toString(); menuPopup.appendChild(menuItem); } contextMenu.addEventListener("popupshowing", setMenuDisplay, false); function setMenuDisplay(aEvent) { if(gContextMenu.onImage){ document.getElementById("imagechangesize").hidden = false; }else{ document.getElementById("imagechangesize").hidden = true; } } function zoomIn(){ var imgObj = gContextMenu.target; if(imgObj.localName.toLowerCase() != "img") return; var zoom = imgObj.getAttribute(ZOOM_ATTR); if(zoom == null) zoom = 1; if(MAX_MAGNIFICATION > zoom){ zoom = parseFloat(zoom) * MAGNIFICATION; imgObj.width = imgObj.naturalWidth * zoom; imgObj.height = imgObj.naturalHeight * zoom; imgObj.setAttribute(ZOOM_ATTR, zoom); } } function original(){ var imgObj = gContextMenu.target; if(imgObj.localName.toLowerCase() != "img") return; imgObj.width = imgObj.naturalWidth; imgObj.height = imgObj.naturalHeight; imgObj.removeAttribute(ZOOM_ATTR); } function zoomOut(){ var imgObj = gContextMenu.target; if(imgObj.localName.toLowerCase() != "img") return; var zoom = imgObj.getAttribute(ZOOM_ATTR); if(zoom == null) zoom = 1; if(MIN_MAGNIFICATION < zoom){ zoom = parseFloat(zoom) / MAGNIFICATION; if(zoom == 0){ imgObj.width = imgObj.naturalWidth; imgObj.height = imgObj.naturalHeight; }else{ imgObj.width = imgObj.naturalWidth * zoom; imgObj.height = imgObj.naturalHeight * zoom; } imgObj.setAttribute(ZOOM_ATTR, zoom); } } })();
Отсутствует
rbfyec
Знакомый код
this.tooltipText = "[L=Zoom+ |M=Page/Text |R=Zoom-]"; var prefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Ci.nsIPrefBranch); var TextIcon = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACQklEQVQ4jaWSzUtUYRTGf+97rzM6V22YVBQJa1GbPjCiIMJFzaJNYosiiSAooV0ryWW7Nv0DiYXRJnAVtgqMaBEEFShJovmRM43jfDsfd+aO9973bWVIjBZ0ls/znIdzznPgP0vsRYxPvt/KFUqVRHLLS6RE36sXtxpqZSPwZP/A1aagdSBkRXqlGe7bTJcxgkev/LPB9ZsPxoslh0zOJpkqkUiWsLoHXzfSmo3AuhfsysYKxBNFFpezlIoFlG8DdADZfScYvv1oJpO1WVjK8PHTUj6+vpJWfhmUS0vn0Nu/rnDoyOmoXd0mnamQXH1+w9l69xAMhNGMGew5ta9B/5nLI0ppao6HXd0GJzbjVuafSLMVabQjDItg+OLTPQ0Gr41O2NVtsjmbjdiX6R3crS5PC9mMkEECbSfuNjTo7Dzc79Q98oUqyXSZaurl0A5XTU0NmaaJECZCGBjNx0Z2uN/PcX9sKleuycjc/CbLqzHUdg7QCCOENCyQAdAK7dsor0xl45mAXTEWSkS+LiRZWVnEq62h3C0QAmm0Icx2pBFCyABaK7SuA1Y/2LMC4PylsZlivScaj33HrXzDKX2+gxZ9SImUzSADKF/9DIXPTiAkWnto38k7+TcHTYB0qTOaSf/ArS5Ttxen8cuTAChQuw7m1rqGjUBHFHzQKgIgWiIXRptazz32amu4tTXcylwPsPln3jsVDA9orV3QPtqrfRBW772KcuIVt570lJtvVfX18F7NAKZ1fBbtd2vtOdKw+n4B6skL1gRzZQAAAAAASUVORK5CYII='; var PageIcon = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAwElEQVQ4jd3RMWpCQRSF4S/iBtyCELHW1sIV6ALiRnQH4hJ0ByF2Ym8aG1Ml8Ji3ArXRDZhUA+bx3qCWHjgw3Jn57+XcF1fq0JXQF7vUvYxw4bfKGWHO4mFA9AfLJCAjdOhG9+jPWVxDmrSSgLIGGz4jYMwEaslQCtqyLdbuAgwYxvOJM9SrHscRoUFjwLDFKwTy97Igb93CG6P4p3KCQF6sHdhPma1YJwGBvF22phLdFeKTAv6F+MP3gf2R462AP7hdbq8C1bDsAAAAAElFTkSuQmCC'; if(prefs.getBoolPref("browser.zoom.full")) this.image = PageIcon; else this.image = TextIcon; this.leftclick = function(e) { document.getElementById("cmd_fullZoomEnlarge").doCommand(); } this.midclick = function (evt){ if(prefs.getBoolPref("browser.zoom.full")) { prefs.setBoolPref("browser.zoom.full", false); this.image = TextIcon; ucjs_zoom.updateZoom(); } else{ prefs.setBoolPref("browser.zoom.full", true); this.image = PageIcon; ucjs_zoom.updateZoom(); } }; this.rightclick = function(event) { document.getElementById("cmd_fullZoomReduce").doCommand(); }; this. gQuot = {}; this. gQuot. __proto__ = custombuttons. gQuot; this. gQuot. dcDelay = 0; this. setAttribute ('onclick', 'this.gQuot.mHandler(event, this)'); //Zoom+ ........................................ var ucjs_zoom = { _TAGET_ID: "page-report-button", // Цвет и знаков(default: представляющая режим масштабирования) _ZOOM_MODE: [ { txt: "\Full Zoom", color: "false", font: "font-weight: normal ;" }, // Полный зум, черный { txt: "\Zoom", color: "true", font: "font-weight: bold;" } ], // Масштаб текста синий //Инициализация init: function() { // Zoom var _cmd = "ucjs_zoom.updateZoom(); $&"; // toggleZoom eval("ZoomManager.toggleZoom = " + ZoomManager.toggleZoom.toString().replace(/}$/, _cmd)); // reset eval("FullZoom.reset = " + FullZoom.reset.toString().replace(/}$/, _cmd)); // enlarge eval("FullZoom.enlarge = " + FullZoom.enlarge.toString().replace(/}$/, _cmd)); // reduce eval("FullZoom.reduce = " + FullZoom.reduce.toString().replace(/}$/, _cmd)); // _handleMouseScrolled _cmd = "setTimeout(ucjs_zoom.updateZoom, 0); $&"; eval("FullZoom._handleMouseScrolled = " + FullZoom._handleMouseScrolled.toString().replace(/}$/, _cmd)); addEventListener("TabAttrModified", function(e) { if ( e.target.linkedBrowser.currentURI.spec !== gBrowser.currentURI.spec ) return; ucjs_zoom.updateZoom(); }, true, gBrowser.tabContainer ); // Zoom Создание панели var zoomPanel = document.createElement("statusbarpanel"); zoomPanel.setAttribute("id", "ucjs_zoom_statuslabel"); zoomPanel.setAttribute("context", "ucjs_zoom-context"); var targetPanel = document.getElementById(this._TAGET_ID); targetPanel.parentNode.insertBefore(zoomPanel, targetPanel.nextSibling); // Zoom Колесико прокрутки на панели zoomPanel.addEventListener("DOMMouseScroll", function(event){ if (event.detail > 0) FullZoom.reduce(); else FullZoom.enlarge(); }, false); //Zoom Reset zoomPanel.addEventListener("click", function(){document.getElementById("cmd_fullZoomReset").doCommand()}, true); }, // Чтобы изменить значение масштаба для определения количества set_Zoom: function(n) { var markupDocumentViewer = getBrowser().markupDocumentViewer; if (!markupDocumentViewer) return; if (ZoomManager.useFullZoom) { if (markupDocumentViewer.textZoom != 1) markupDocumentViewer.textZoom = 1; if (markupDocumentViewer.fullZoom != n) markupDocumentViewer.fullZoom = n; } else { if (markupDocumentViewer.textZoom != n) markupDocumentViewer.textZoom = n; if (markupDocumentViewer.fullZoom != 1) markupDocumentViewer.fullZoom = 1; } ucjs_zoom.updateZoom(); return n; }, // Обновить статус кнопки updateZoom: function(){ // Кнопка для обновления статуса var Zoom = document.getElementById("ucjs_zoom_statuslabel"); Zoom.setAttribute("label", Math.floor((ZoomManager.zoom + 0.005) * 100) + "%"); Zoom.setAttribute("tooltiptext", ucjs_zoom._ZOOM_MODE[ZoomManager.useFullZoom? 0: 1].txt); Zoom.setAttribute("ZoomStyle", ucjs_zoom._ZOOM_MODE[ZoomManager.useFullZoom? 0: 1].color); Zoom.setAttribute("style", ucjs_zoom._ZOOM_MODE[ZoomManager.useFullZoom? 0: 1].font); } }; //Запускаем функцию // не запускаем функцию, если функция уже выполнялась if (!document.getElementById("ucjs_zoom_statuslabel")) ucjs_zoom.init(); //image Change Size....................................... (function imageChangeSize(){ // выходим, если функция уже выполнялась if (document.getElementById("imagechangesize")) return; const MAGNIFICATION = 2; const MAX_MAGNIFICATION = MAGNIFICATION * 8; const MIN_MAGNIFICATION = MAGNIFICATION / 8; const ZOOM_ATTR = "jsa-zoom"; const kXULNS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"; var contextMenu = document.getElementById("contentAreaContextMenu"); var separator = document.getElementById("context-sep-properties"); var eventTarget = null; var menu = document.createElementNS(kXULNS, "menu"); menu.id = "imagechangesize"; var locale = Components.classes["@mozilla.org/preferences-service;1"] .getService(Components.interfaces.nsIPrefBranch) .getCharPref("general.useragent.locale"); menu.setAttribute("label", locale.indexOf("ru") == -1 ? "Image zoom" : "Изменить размер"); menu.setAttribute("accesskey", "i"); menu.hidden = true; contextMenu.insertBefore(menu, separator); var menuPopup = document.createElementNS(kXULNS, "menupopup"); menu.appendChild(menuPopup); var lst = [ { label:"\Zoom (+)", command:zoomIn }, { label:"\Zoom (-)", command:zoomOut }, { label:"\Zoom (0)", command:original } ]; for(var i = 0, m; m = lst[i]; i++){ var menuItem = document.createElementNS(kXULNS, "menuitem"); menuItem.setAttribute("label", m.label); if ("accesskey" in m) menuItem.setAttribute("accesskey", m.accesskey); menuItem.addEventListener("command", m.command, false); menuItem.id = "image-change-size-" + m.label.toString(); menuPopup.appendChild(menuItem); } contextMenu.addEventListener("popupshowing", setMenuDisplay, false); function setMenuDisplay(aEvent) { if(gContextMenu.onImage){ document.getElementById("imagechangesize").hidden = false; }else{ document.getElementById("imagechangesize").hidden = true; } } function zoomIn(){ var imgObj = gContextMenu.target; if(imgObj.localName.toLowerCase() != "img") return; var zoom = imgObj.getAttribute(ZOOM_ATTR); if(zoom == null) zoom = 1; if(MAX_MAGNIFICATION > zoom){ zoom = parseFloat(zoom) * MAGNIFICATION; imgObj.width = imgObj.naturalWidth * zoom; imgObj.height = imgObj.naturalHeight * zoom; imgObj.setAttribute(ZOOM_ATTR, zoom); } } function original(){ var imgObj = gContextMenu.target; if(imgObj.localName.toLowerCase() != "img") return; imgObj.width = imgObj.naturalWidth; imgObj.height = imgObj.naturalHeight; imgObj.removeAttribute(ZOOM_ATTR); } function zoomOut(){ var imgObj = gContextMenu.target; if(imgObj.localName.toLowerCase() != "img") return; var zoom = imgObj.getAttribute(ZOOM_ATTR); if(zoom == null) zoom = 1; if(MIN_MAGNIFICATION < zoom){ zoom = parseFloat(zoom) / MAGNIFICATION; if(zoom == 0){ imgObj.width = imgObj.naturalWidth; imgObj.height = imgObj.naturalHeight; }else{ imgObj.width = imgObj.naturalWidth * zoom; imgObj.height = imgObj.naturalHeight * zoom; } imgObj.setAttribute(ZOOM_ATTR, zoom); } } })();
Отсутствует
bunda1
Теперь порядок! Спасибо!
Заодно уже спрошу: как перезапустить (инициализировать заново) кнопку?
Сейчас я открываю кнопку на редактирование и жму ОК. Но наверно есть способ сделать это программно?
Отсутствует
Заодно уже спрошу: как перезапустить (инициализировать заново) кнопку?
Сейчас я открываю кнопку на редактирование и жму ОК. Но наверно есть способ сделать это программно?
А зачем, в чём проблема?
Отсутствует
А зачем, в чём проблема?
Кнопка "Открывать всё в новых вкладках, от 17.11.2013" из этого поста http://forum.mozilla-russia.org/viewtop … 66#p633366 вроде работает хорошо, но всё же иногда закладки и др. начинают открываться в текущей вкладке.
Помогает перезапуск этой кнопки.
Отсутствует
Кнопка "Открывать всё в новых вкладках, от 17.11.2013" из этого поста http://forum.mozilla-russia.org/viewtop … 66#p633366 вроде работает хорошо, но всё же иногда закладки и др. начинают открываться в текущей вкладке.
Помогает перезапуск этой кнопки.
Мистика, не возможно. А закладки ты откуда отрываешь?
Отредактировано bunda1 (01-12-2013 21:31:25)
Отсутствует