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

Список ответов на каверзные вопросы можно получить в FAQ-разделе форума.

№2612-06-2012 22:11:01

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 3.6

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

BBoxerb
Ты наверно имеешь виду открытие новых окон, действительно масштаб сбрасывается на 100%. Попробую с этим что то сделать.

Отсутствует

 

№2706-07-2012 22:38:56

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 3.6

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

Изменить масштаб (Firefox 3.6 +) 13-11-2011 02:51:31
Исправил ошибки:
Самопроизвольный сброс масштаба в новом окне.

Уменьшил потребление ресурсов кодом кнопки.
Убрал лишний код.
Добавил в исключения для единого масштаба все страницы about: и страницу Fast Dial

Отредактировано bunda1 (08-07-2012 18:26:01)

Отсутствует

 

№2822-08-2012 19:58:00

BBoxerb
Участник
 
Группа: Members
Зарегистрирован: 06-05-2011
Сообщений: 24
UA: Firefox 12.0

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

Cнова я:)
Как-то странно, открываешь новую вкладку, масштаб сохраняется.
Но часто бывает, что через скажем минуту, масштаб страницы сжимается до крошечного:(
Приходится кликать на 100%.
Не пойму, это оттого, что у меня другие кнопки на масштаб установлены, в частности твоя, которая меняет мин. размер шрифта с 12 на 24?
Вставлял код/редактировал кнопку несколько раз, не помогает.
Ничего такого не замечал?

Отсутствует

 

№2922-08-2012 20:25:30

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 3.6

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

BBoxerb пишет

Cнова я:)
Как-то странно, открываешь новую вкладку, масштаб сохраняется.
Но часто бывает, что через скажем минуту, масштаб страницы сжимается до крошечного:(
Приходится кликать на 100%.
Не пойму, это оттого, что у меня другие кнопки на масштаб установлены, в частности твоя, которая меняет мин. размер шрифта с 12 на 24?
Вставлял код/редактировал кнопку несколько раз, не помогает.
Ничего такого не замечал?

Если я правильно понял у тебя самопроизвольный уменьшается масштаб ?
Кнопка Наименьший размер шрифта вряд ли виновата.
Такое возможно если использовать CB кнопки или расширения которые использует жесты мыши как расширения FireGestures, ты такие используешь ?

BBoxerb пишет

Не пойму, это оттого, что у меня другие кнопки на масштаб установлены

Какие кнопки ?

Отсутствует

 

№3024-10-2012 14:05:19

BBoxerb
Участник
 
Группа: Members
Зарегистрирован: 06-05-2011
Сообщений: 24
UA: Firefox 12.0

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

bunda1
Ты мне сделал кнопку которая меняет миним. размер шрифта с одного на другое.
Самопроизвольно сжимается масштаб походу из-за мыши (обычная мышь Логитек о расширениях Firegestus даже не слышал что это?) и когда средняя кнопка мыши в режиме "КРАСНЫЙ-выделенный"
Я сейчас пользуюсь режимом ЧЕрный-Выделенный, но каждый раз когда я открываю новую вкладку он сбрасывает на 100%
Зато в режиме Черного-выделенного не сжимает самопроизвольно масштаб :)
(Я уже грил я открываю вкладки а не новые страницы, новые страницы открываю когда вкладок уже открыто много:))

Отсутствует

 

№3125-10-2012 07:58:19

Mils
Участник
 
Группа: Members
Зарегистрирован: 12-05-2012
Сообщений: 11
UA: Firefox 16.0

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

При открытии новых окон не сохраняется масштаб, как исправить?

Отсутствует

 

№3225-10-2012 18:28:08

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 3.6

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

Mils пишет

При открытии новых окон не сохраняется масштаб, как исправить?

У меня такой баг не наблюдается. Когда ты устанавливал или обновлял кнопку? Я уже исправлял такой баг 06-07-2012 21:38:56

Отсутствует

 

№3327-05-2013 20:09:09

voqabuhe
Участник
 
Группа: Members
Зарегистрирован: 06-12-2011
Сообщений: 3231
UA: Firefox 24.0

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

bunda1
После сегодняшнего обновления в [nightly] масштаб меняет, а отображает постоянно 100%.

Отсутствует

 

№3427-05-2013 21:03:03

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 3.6

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

voqabuhe пишет

После сегодняшнего обновления в [nightly] масштаб меняет, а отображает постоянно 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)

Отсутствует

 

№3527-05-2013 21:40:56

voqabuhe
Участник
 
Группа: Members
Зарегистрирован: 06-12-2011
Сообщений: 3231
UA: Firefox 24.0

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

bunda1 пишет

Ну вроде исправил: Изменить масштаб( Firefox 3.6 + )

Да спасибо, теперь вроде всё работает. Кстати с предыдущей версией у меня  никаких проблем не было.

Отсутствует

 

№3630-05-2013 11:17:22

voqabuhe
Участник
 
Группа: Members
Зарегистрирован: 06-12-2011
Сообщений: 3231
UA: Firefox 24.0

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

bunda1
В режиме "менять масштаб страниц" ошибка осталась. С той лишь разницей, что отображается ранее установленный масштаб.

Отсутствует

 

№3730-05-2013 18:40:22

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 3.6

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

Если я правильно понял то после переключения на режим "менять масштаб страниц" переключаясь на другие сайты масштаб меняется но на кнопке отображается ранее установленный масштаб.
Я такой глюк на Nightly не наблюдаю и вроде такое невозможно :/
Что пишет консоль ошибок ?

Отредактировано bunda1 (30-05-2013 18:40:46)

Отсутствует

 

№3830-05-2013 19:30:46

voqabuhe
Участник
 
Группа: Members
Зарегистрирован: 06-12-2011
Сообщений: 3231
UA: Firefox 24.0

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

bunda1
Да  правильно понял.  Именно так всё и происходит, правда с небольшим уточнением :), как оказалось, если менять масштаб на кнопке, то всё работает, это у меня не меняется, если пользуюсь жестами. Так что вопрос снимается, буду с   FireGestures разбираться.

Отсутствует

 

№3930-05-2013 19:55:36

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 3.6

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

Увеличить масштаб:

Выделить код

Код:

document.getElementById("cmd_fullZoomEnlarge").doCommand();

Уменьшить масштаб:

Выделить код

Код:

document.getElementById("cmd_fullZoomReduce").doCommand();

Отсутствует

 

№4030-05-2013 21:33:05

voqabuhe
Участник
 
Группа: Members
Зарегистрирован: 06-12-2011
Сообщений: 3231
UA: Firefox 24.0

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

bunda1
Да всё спасибо. Я уже нашёл, там есть свои, вот так выглядят 
Увеличить:
cmd_fullZoomEnlarge
Уменьшить:
cmd_fullZoomReduce

Отсутствует

 

№4130-11-2013 22:03:10

voqabuhe
Участник
 
Группа: Members
Зарегистрирован: 06-12-2011
Сообщений: 3231
UA: Firefox 28.0

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

bunda1
В [nightly], если переключить режим отображения страницы менять масштаб страницы/только текст, а затем ПКМ открыть любую ссылку на странице, то дополнительно открывается ещё две вкладки и их колличество прибавляется после каждого переключения. :(

Отсутствует

 

№4230-11-2013 22:45:08

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 3.6

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

voqabuhe пишет

bunda1
В [nightly], если переключить режим отображения страницы менять масштаб страницы/только текст, а затем ПКМ открыть любую ссылку на странице, то дополнительно открывается ещё две вкладки и их колличество прибавляется после каждого переключения. :(

Ты уверен, ни какой связи с открытием ссылок на странице не должно быть. Может попробуй:

Выделить код

Код:

// Кнопка для управления масштабом страницы в адресной строке, от 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)

Отсутствует

 

№4330-11-2013 23:00:38

voqabuhe
Участник
 
Группа: Members
Зарегистрирован: 06-12-2011
Сообщений: 3231
UA: Firefox 28.0

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

bunda1 пишет

Ты уверен, ни какой связи с открытием ссылок на странице не должно быть.

Конечно уверен, несколько раз пробовал.

Может попробуй:

   Что-то не то, все кнопки пропали, которые там были вместе с Масштабом.   
Виноват, видно неправильно вставил. Всё нормально работает, а главное так оперативно.
  Спасибо!!! :beer:

Отредактировано voqabuhe (30-11-2013 23:12:55)

Отсутствует

 

№4401-12-2013 00:49:49

rbfyec
Участник
 
Группа: Members
Зарегистрирован: 07-07-2012
Сообщений: 365
UA: Firefox 25.0

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

Я пользуюсь кнопкой с этого форума, не могу даже сказать точное название. Вот её код

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

Выделить код

Код:

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);
        }
    }

})();


Менять кнопку мне бы не хотелось, эта меня вполне устраивает. Но одно НО - часто в адресной строке показан масштаб 100%, хотя на самом деле он другой.
Как бы эту кнопку довести до ума?

Отсутствует

 

№4501-12-2013 01:09:52

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 3.6

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

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);
        }
    }

})();


Замени код и сделай рестарт.

Отсутствует

 

№4601-12-2013 20:06:50

rbfyec
Участник
 
Группа: Members
Зарегистрирован: 07-07-2012
Сообщений: 365
UA: Firefox 25.0

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

bunda1
Теперь порядок! Спасибо! :D

Заодно уже спрошу: как перезапустить (инициализировать заново) кнопку?
Сейчас я открываю кнопку на редактирование и жму ОК. Но наверно есть способ сделать это программно?

Отсутствует

 

№4701-12-2013 20:48:22

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 3.6

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

rbfyec пишет

Заодно уже спрошу: как перезапустить (инициализировать заново) кнопку?
Сейчас я открываю кнопку на редактирование и жму ОК. Но наверно есть способ сделать это программно?

А зачем, в чём проблема?

Отсутствует

 

№4801-12-2013 21:00:56

rbfyec
Участник
 
Группа: Members
Зарегистрирован: 07-07-2012
Сообщений: 365
UA: Firefox 25.0

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

bunda1 пишет

А зачем, в чём проблема?

Кнопка "Открывать всё в новых вкладках, от 17.11.2013" из этого поста http://forum.mozilla-russia.org/viewtop … 66#p633366 вроде работает хорошо, но всё же иногда закладки и др. начинают открываться в текущей вкладке.

Помогает перезапуск этой кнопки.

Отсутствует

 

№4901-12-2013 21:30:15

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 3.6

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

rbfyec пишет

Кнопка "Открывать всё в новых вкладках, от 17.11.2013" из этого поста http://forum.mozilla-russia.org/viewtop … 66#p633366 вроде работает хорошо, но всё же иногда закладки и др. начинают открываться в текущей вкладке.
Помогает перезапуск этой кнопки.

Мистика, не возможно. А закладки ты откуда отрываешь?

Отредактировано bunda1 (01-12-2013 21:31:25)

Отсутствует

 

№5001-12-2013 21:53:31

rbfyec
Участник
 
Группа: Members
Зарегистрирован: 07-07-2012
Сообщений: 365
UA: Firefox 25.0

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

bunda1 пишет

А закладки ты откуда отрываешь?

Menubar - Закладки - выпадающий список

Отсутствует

 

Board footer

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