Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » Расширения для Firefox/Mozilla Firefox Extensions (часть 9)

Модерирует : gyra, Maz

Maz (02-04-2019 17:51): Переезжаем: Расширения для Firefox/Mozilla Firefox Extensions (часть 10)  Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

   

exsidas



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
/*Initialization Code*/
 
// Увеличивать размеры изображений из контекстного меню на странице, от 14.03.2014. ................................
(function g() {
   var imgZoom = 170;    // на сколько увеличить изображение из меню
   var scrollZoom = 20;  // на сколько увеличивать/уменьшать колесиком мыши
   var scrollTop = 1;    // или -1, переключение направление прокрутки для увеличение колёсиком
 
   // добавить новый пункт в меню изображений ....
   var contextMenu = document.getElementById("contentAreaContextMenu");
   var menuitem = contextMenu.appendChild(document.createElement("menuitem")); // как последний пункт меню
   menuitem.setAttribute("label", "Увеличить размер");
   addDestructor(function() contextMenu.removeChild(menuitem));
 
   // отслеживать открытие контекстного меню на странице ....
   addEventListener("popupshowing", function(e) {  
 
      menuitem.hidden = !gContextMenu.onImage; // скрывать пункт если не контекстное меню изображений          
      if ( !gContextMenu.onImage ) return;
 
      // получить координаты и размеры изображения
      var trg = e.target.triggerNode;
      g.win = trg.ownerDocument.defaultView;
      g.rect = trg.getBoundingClientRect();
 
   }, true, contextMenu);
 
   // если клик или команда на пункте меню ....
   menuitem.setAttribute("oncommand", "this.run();");
   menuitem.run = function() {
      var img = gContextMenu.target; // получить изображение
 
      // создать и открыть всплывающую подсказку с увеличенным изображением над изображением ....  
      var tooltip = gBrowser.appendChild(document.createElement("tooltip")), tts = tooltip.style;
      tooltip.setAttribute("onpopuphiding", "event.preventDefault();");
      tts.cssText = "position: fixed; margin: 0; padding: 0; -moz-appearance: none !important; border: none; background: transparent; max-width: none";
 
      var image = tooltip.appendChild(new Image());
      image.setAttribute("validate", "never"); // изображение будет загружено из кэша, если это возможно  
      image.setAttribute("src", img.src );
 
      var z = ZoomManager.useFullZoom ? ZoomManager.zoom : 1;
      var rect = {
         width: z * g.rect.width,
         height: z * g.rect.height,
                 left: z * (g.rect.left + g.win.mozInnerScreenX) - mozInnerScreenX,
         top: z * (g.rect.top + g.win.mozInnerScreenY) - mozInnerScreenY
         };
      var ratio = rect.height / rect.width;
 
      var k = -Math.min(mozInnerScreenY, 0);
      var sh = innerHeight + k;
      var w = Math.min(rect.width + imgZoom, innerWidth);
      if (w * ratio > sh) w = sh / ratio;
      image.style.width = w + "px";
 
      var zoom = w - rect.width;
      var left = Math.max(rect.left - zoom / 2, 0);
      var top = Math.max(rect.top - ratio * zoom / 2, k);
 
      var r = left + rect.width + zoom - innerWidth;
      if (r > 0) left -= r;
      var b = top + rect.height + ratio * zoom - innerHeight;
      if (b > 0) top -= b;
 
      tts.left = left + "px"; tts.top = top + "px";
      tooltip.openPopupAtScreen(0, 0);
 
      // прокрутка на подсказке меняет размеры изображения, на странице закрывает его ....
      function imageZoom(e) {
         if (e.target != image) { removeTooltip(); return; }
 
         var zoom = (e.detail < 0 ? scrollZoom : -scrollZoom) * scrollTop;
     var zx = zoom / 2, zy = zx * ratio;
     var rect = tooltip.getBoundingClientRect();
     var left = rect.left - zx, top = rect.top - zy;
 
     if ( zoom > 0 ) {
          if (left - zx < 0 && rect.right < innerWidth) left = 0;
          var r = rect.right + zx - innerWidth;
          if (r > 0 && left > 0) left -= r;
 
          if (top < k && rect.bottom < innerHeight) top = k;
          var b = rect.bottom + zy - innerHeight;
          if (b > 0 && top > k) top -= b;
          }
         image.style.width = rect.width + zoom + "px";
         tts.left = left + "px"; tts.top = top + "px";
      }
      gBrowser.addEventListener('DOMMouseScroll', imageZoom, true);
 
      // удалить подсказку и обработчики ....
      function removeTooltip() {
         try { gBrowser.removeChild( tooltip ) } catch(e) {};
     gBrowser.removeEventListener("click", removeTooltip, true);
         gBrowser.removeEventListener("DOMMouseScroll", imageZoom, true);
      }
      gBrowser.addEventListener("click", removeTooltip, true);  // удалить по клику на странице
   }    
})();

Всего записей: 925 | Зарегистр. 18-10-2010 | Отправлено: 14:09 13-12-2017
   

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Программы » Расширения для Firefox/Mozilla Firefox Extensions (часть 9)
Maz (02-04-2019 17:51): Переезжаем: Расширения для Firefox/Mozilla Firefox Extensions (часть 10)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru