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

Будьте в курсе последних изменений в мире Mozilla, следя за нашим микроблогом в Twitter.

№40130-07-2014 16:35:49

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4291
UA: Firefox 31.0

Re: Обсуждение кнопок CB

okkamas_knife пишет:

я то наивный думал что хоть с сайдбаром у них одинаково..

Не-а, там как раз полно отличий, из-за этого даже некий xSidebar есть:
http://xsidebar.mozdev.org/
https://addons.mozilla.org/seamonkey/addon/xsidebar/
http://forums.mozillazine.org/viewtopic … p;t=568392


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№40230-07-2014 19:12:34

firepox
Участник
 
Группа: Members
Зарегистрирован: 17-11-2011
Сообщений: 339
UA: Firefox 31.0

Re: Обсуждение кнопок CB

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

было бы еще лучше )

Отредактировано firepox (30-07-2014 19:13:02)

Отсутствует

 

№40330-07-2014 19:48:58

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4291
UA: Firefox 31.0

Re: Обсуждение кнопок CB

firepox пишет:

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

Все-таки есть там код для проверки без боковой панели.

Выделить код

Код:

// See chrome://updatescan/content/autoscan.js and chrome://updatescan/content/updatescan.js
// Like USc_autoscan._check(), but check all items like USc_updatescan.scanButtonClick()
var me = USc_autoscan;
me.scan = new USc_scanner();
me.numChanges = 0;
if(me.scan.addItems(USc_places.getRootFolderId(), false /*autoScan*/) > 0) {
    me.scan.start(
        me._scanChanged,
        function onFinished() {
            me._scanFinished();
            if(me.numChanges) {
                toggleSidebar("viewUpdateScanSidebar", true);
            }
            else {
                var str = document.getElementById("updatescanStrings");
                window.openDialog(
                    "chrome://updatescan/content/alert.xul",
                    "alert:alert",
                    "chrome,dialog=yes,titlebar=no,popup=yes",
                    str.getString("statusNoChanges")
                );
            }
        },
        me._scanProgress,
        me._encodingChanged
    );
}

Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№40430-07-2014 20:04:01

firepox
Участник
 
Группа: Members
Зарегистрирован: 17-11-2011
Сообщений: 339
UA: Firefox 31.0

Re: Обсуждение кнопок CB

Infocatcher
Класс!
Спасибо!

Отсутствует

 

№40530-07-2014 21:04:25

firepox
Участник
 
Группа: Members
Зарегистрирован: 17-11-2011
Сообщений: 339
UA: Firefox 31.0

Re: Обсуждение кнопок CB

а можно в последнем варианте убрать сообщение, чтобы если нет изменений - ничего и не происходило.

Добавлено 30-07-2014 21:07:50
извините, сам понял как сделать.

Отредактировано firepox (30-07-2014 21:07:50)

Отсутствует

 

№40603-08-2014 03:33:42

foxX
Участник
 
Группа: Members
Зарегистрирован: 03-08-2014
Сообщений: 1
UA: Firefox 30.0

Re: Обсуждение кнопок CB

помогите плиз! как сделать чтоб при запуске лисы у иконки была картинка (1) а после переключения (2)?

Отсутствует

 

№40714-08-2014 09:57:27

VORON
Участник
 
Группа: Members
Зарегистрирован: 03-04-2013
Сообщений: 131
UA: Firefox 28.0

Re: Обсуждение кнопок CB

Где то видел кнопку для запаролевания firefox-не могу найти.Ткните плиз.

Отсутствует

 

№40814-08-2014 10:45:17

VORON
Участник
 
Группа: Members
Зарегистрирован: 03-04-2013
Сообщений: 131
UA: Firefox 28.0

Re: Обсуждение кнопок CB

okkamas_knife
Да,оно-благодарю!

Отсутствует

 

№40916-08-2014 19:30:48

difabor
Участник
 
Группа: Members
Зарегистрирован: 21-09-2013
Сообщений: 523
UA: Firefox 28.0
Веб-сайт

Re: Обсуждение кнопок CB

Можно ли сделать кнопку, которая по длинному левому клику на вкладку в таббаре делала бы перезагрузку (reload, refresh) этой вкладки, а по короткому, как обычно - делала бы эту вкладку активной (как сейчас)?


Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©

Отсутствует

 

№41016-08-2014 21:15:10

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

Re: Обсуждение кнопок CB

difabor пишет:

Можно ли сделать кнопку, которая по длинному левому клику на вкладку в таббаре делала бы перезагрузку (reload, refresh) этой вкладки, а по короткому, как обычно - делала бы эту вкладку активной (как сейчас)?

Выделить код

Код:

(function f() { 
   const tabbrowser = gBrowser.mTabContainer;
   
   addEventListener("click", function(e) {
      if ( e.button || e.target.nodeName !== "tab" || (Date.now() - f.mouseDownTime) < 600 ) return;
           BrowserReload();
   }, true, tabbrowser );
   
   addEventListener("mousedown", function() f.mouseDownTime = Date.now(), true, tabbrowser ); 
})();

или:

Выделить код

Код:

function tabLongPress(e) {
  if ( e.button || e.target.nodeName !== "tab" ) return;
       
  if ( e.type == "mousedown" ) 
       tabLongPress.time = Date.now(), e.stopPropagation();       
  else
       Date.now() - tabLongPress.time > 600 ? gBrowser.reloadTab(e.target) : gBrowser.selectedTab = e.target;
}; 
["click", "mousedown"].forEach(function(type) addEventListener(type, tabLongPress, true, gBrowser.mTabContainer ));

Отредактировано bunda1 (16-08-2014 21:56:24)

Отсутствует

 

№41116-08-2014 21:42:25

sonyas75
Участник
 
Группа: Members
Откуда: Ставрополь
Зарегистрирован: 22-03-2011
Сообщений: 368
UA: Firefox 31.0

Re: Обсуждение кнопок CB

а можно :( ?
у меня сейчас вот такой код работает

Выделить код

Код:

//Активизировать вкладку наведением курсора......................
var tab_hover={
   event:null,
   tid:null,

   onLoad: function() {
      gBrowser.tabContainer.addEventListener("mouseout", tab_hover.onMouseOut, false);
      gBrowser.tabContainer.addEventListener("mouseover", tab_hover.onMouseOver, false);
   },
   onUnload: function() {
      gBrowser.tabContainer.removeEventListener("mouseover", tab_hover.onMouseOver, false);
      gBrowser.tabContainer.removeEventListener("mouseout", tab_hover.onMouseOut, false);
   },

   onMouseOver: function(event) {
      tab_hover.event=event.target;
      tab_hover.tid=setTimeout( function(){ gBrowser.selectedTab=tab_hover.event;   } , 450);
   },
   onMouseOut: function() {
      clearTimeout(tab_hover.tid);
   }
};
if (!this.tab_hoverRun) tab_hover.onLoad();
this.tab_hoverRun = true;

можно в него добавить код по короткому левому клику на вкладку в таббаре делала бы перезагрузку (reload, refresh) этой вкладки? спс заранее :blush:

Отредактировано sonyas75 (16-08-2014 21:43:52)

Отсутствует

 

№41216-08-2014 21:55:05

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

Re: Обсуждение кнопок CB

sonyas75 пишет:

можно в него добавить код по короткому левому клику на вкладку в таббаре делала бы перезагрузку (reload, refresh) этой вкладки? спс заранее :blush:

Добавлять не надо, будет работать вместе с твоим кодом:

Выделить код

Код:

addEventListener("click", function(e) {
   if ( e.button == 0 && e.target.nodeName == "tab" ) BrowserReload();
}, true, gBrowser.mTabContainer );

Кстати, советую заменить твой код на:

Выделить код

Код:

// Активизировать вкладку наведением курсора, если 'Панель меню' закрыт ................................
(function () { 
   var menubar = document.getElementById('toolbar-menubar');
         
   addEventListener("mouseover", function(e) {
      if ( menubar.getAttribute("autohide") == 'true' && menubar.getAttribute("inactive") ) {
           gBrowser.selectedTab = e.target;
           e.target.setAttribute('read', 'true');
           }                  
   }, false, gBrowser.tabContainer ); 
   
})();

Отсутствует

 

№41316-08-2014 22:05:47

sonyas75
Участник
 
Группа: Members
Откуда: Ставрополь
Зарегистрирован: 22-03-2011
Сообщений: 368
UA: Firefox 31.0

Re: Обсуждение кнопок CB

о! премного благодарен :)

Отсутствует

 

№41417-08-2014 00:34:09

difabor
Участник
 
Группа: Members
Зарегистрирован: 21-09-2013
Сообщений: 523
UA: Firefox 28.0
Веб-сайт

Re: Обсуждение кнопок CB

И от меня - огромнейшее спасибо!!!


Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©

Отсутствует

 

№41518-08-2014 01:17:06

difabor
Участник
 
Группа: Members
Зарегистрирован: 21-09-2013
Сообщений: 523
UA: Firefox 28.0
Веб-сайт

Re: Обсуждение кнопок CB

Уважаемый bunda1,
  мне очень нравится Ваше открытие вкладки по наведению курсора - очень удобно.
Единственное,что меня смущало, это то, что когда неаккуратно убираешь курсор с вкладки и "цепляешь" им другую вкладку, то делаешь её активной.
Я своими кривыми ручками внёс маленькое изменение:

Выделить код

Код:

// Активизировать вкладку наведением курсора, если 'Панель меню' закрыт ................................ 
(function () { 
   var menubar = document.getElementById('toolbar-menubar'), dateout = Date.now();
   
   addEventListener("mouseout", function(e) {dateout = Date.now(); }, true, gBrowser.tabContainer ); 
   
   addEventListener("mouseover", function(e) {
      if ( menubar.getAttribute("autohide") == 'true' && menubar.getAttribute("inactive") && (Date.now() - dateout > 500 ) ) {
           gBrowser.selectedTab = e.target;
           e.target.setAttribute('read', 'true');
           }                  
   }, false, gBrowser.tabContainer );
   addEventListener("click", function(e) {
       if ( e.button == 0 && e.target.nodeName == "tab" ) BrowserReload();
   }, true, gBrowser.mTabContainer ); 
   
})();

То есть активизация вкладки происходит по наведению курсора, если курсор "покинул" предыдущую вкладку полсекунды или больше тому назад.
Это помогает при неаккуратном перемещении курсора - случайное цепляние другой вкладки не ведёт к её активации


Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©

Отсутствует

 

№41618-08-2014 11:21:58

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

Re: Обсуждение кнопок CB

difabor
Хорошо придумано.

Отсутствует

 

№41731-08-2014 16:54:29

sanya.nefedov
Участник
 
Группа: Members
Зарегистрирован: 31-08-2014
Сообщений: 2
UA: Firefox 31.0

Re: Обсуждение кнопок CB

Подскажите, а с помощью CB можно сделать имитацию нажатий клавивиатуры, чтобы не запускать vbscript:

Выделить код

Код:

Set WshShell = CreateObject("WScript.Shell")
WshShell.SendKeys "{F1}"

Отсутствует

 

№41805-09-2014 20:18:10

Zaycoff
Участник
 
Группа: Extensions
Зарегистрирован: 18-02-2012
Сообщений: 1410
UA: Firefox 32.0

Re: Обсуждение кнопок CB

Кнопочка Clear Cache / Delete flash cookie после обновления до FF32 больше не работает, можно её как-то исправить?

Отсутствует

 

№41905-09-2014 21:46:37

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

Re: Обсуждение кнопок CB

Zaycoff пишет:

Кнопочка Clear Cache / Delete flash cookie после обновления до FF32 больше не работает, можно её как-то исправить?

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3EClear%20Cache%20/%20Delete%20flash%20cookies%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAExEAAAEAIAB4BQAAFgAAACgAAAATAAAAIgAAAAEAIAAAAAAAUAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwAAAAAAAQEBCxMTEyElJSU/KywrWC4sLWUzMzNrPDs8a0NEQ2MsLCxKDg0PKgABAA8AAAAAAgICAAAAAAAAAAAAAAAAAQAAAAIZGhoHQ0NDUGJiYqZxcXHVcXFx6XNzc/STlJT2t7e2+NDP0Pjb3dz11tbY67GwsNtsbWy0JyYnYQICAg8CAgICAAAAAgICAgUAAAAAJykpJ5CRkM64t7f/q6ut/7m5uf/Lx8b/19bW/9nY2P7a2dz+4d/g/+rq6P/r7Or/1NTU/3V1ddkKCwo+AQEBAQEBAQQCAgIDAAABARMTEhdubmy/rq6w/snIyfbj4+H94uXn/d/l7f3W2+X9xc3R/a20u/2oqKr9paWi96Wmpf5ubW3NFRMTNgAAAA4BAQEJAQIBAQICAgUAAQUBhY6UpuDi5f7b2Nj609ng/rfB1v+ssc3/wcja/6qyx/99hqL/iZOr/rW4vfrZ2Nf+io2VuQQHDiICAgETAQEBBgIDBAIDAgEDAQoSAau8wq3/////4Oft+tzm7v7d4On/q6zJ/0tLoP9cXKb/tbXM/9Hb5v7f5/H6/////7K6wrYBDRkNAwEABQICAQECAwQCAQIBAggNEQest7+4+v7+/8rY6Pnf5u7++/r6/6OmzP9kZa//aGmu/8rN4//7+vv/3Obr+Pn9/f+/wsK7ChIWDAIBAQECAwMDAwQEBAEBAQINFhgPprXAvPb////K1OT5vcDX/6SlzP+Bg7z/5ebu/7S11P9+gbv/l5jE/7G60fj1/P7/w8TIwBYYIRcAAQEBBAQEBAQEBQQCAAAAESIsGbTGzMH5////5u70+dTW6P+Dg7//gIC//8PD3f+gocr/OTyf/3J0t/+/xd349P7//73EzsYgIy8hAAAAAAQEBAQEBAUEAAAAABoiLSLAyszH+f///9/q9vj0+Pz/2Nfp/7e32P+9vtz/ubvX/25vtP+/weD/5/D1+Pb////AytHLJSw3KwAAAAAEBAUFBAQFBQAAAAAgKzQrvsvOyvb+/v/I2e/42ef3//L19v/p6Ov//vv7//Hy8v/Jydv/1ODu/97r9Pj9/v//zdHY0C44RjgAAAAABAUFBQQFBQUAAAAAKzpJN8TV2dD4/v7/1Oj++NDq///Q6P7/4PH//+Pw/v/U5fb/xt3z/8Tc9f/X5/f4//7//9PX29c3QktFAAAAAAUFBQUEBQUFAAAAADE5Rj7G09rT8Pr7/8PV6fi60eX/q8ff/63G4P+uxt//s8vl/7PN6//F2fD/0N/r+Pr8/P/W3+TaP09aSwAAAAAFBQUFBAUFBQAAAAA4PUhRqrW/3bK6wP57gIn2cXeD/nh+gv2Rlpf9rrKz/crNz/3c4eT94uft/tDU2/bX2dr+tL3F4kJNWl0AAAAABAUGBgMDAwYAAAAAX15jfq+vsvqjpqb/mJ2f/qmyt/+vvMP+u8nT/8jT3f/R3Ob/2OTs/97l7P/N0dX+wsLE/62usP5WV1uLAAAAAAIDBAUDAwMEAAAAAEdGRkqJiYi6mZma57CztO/Q1tr20tni98PL1vettb/3maGs94uSnfeIjpL3iY2M8ZycnOmZmJfDTUtMVgAAAAACAgIDAAAAAAAAAAAEBAUBDxEQEickJCtAODtEVlFTW2RjZGljYl9yXVxadVdWVHNRUFNqR0RHXT03NkcpJyctFBUWEwgHCAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bthis.onclick%20%3D%20function%28e%29%20%7B%0A%20%20%20%20%20if%20%28%20e.button%20%29%20return%3B%0A%20%20%20%20%20%0A%20%20%20%20%20//%20%u043E%u0447%u0438%u0441%u0442%u0438%u0442%u044C%20%u043A%u044D%u0448%20....%0A%20%20%20%20%20try%20%7B%20%0A%20%20%20%20%20%20%20%20%20Services.cache.evictEntries%28Ci.nsICache.STORE_IN_MEMORY%29%3B%0A%20%20%20%20%20%20%20%20%20Services.cache.evictEntries%28Ci.nsICache.STORE_ON_DISK%29%3B%0A%20%20%20%20%20%20%20%20%20%7D%20%0A%20%20%20%20%20catch%28e%29%20%7B%20Services.cache2.clear%28%29%20%7D%0A%0A%20%20%20%20%20//%20%u0423%u0434%u0430%u043B%u0438%u0442%u044C%20Flash%20%u043A%u0443%u043A%u0438%u0441%u0438%20....%0A%20%20%20%20%20var%20dir%20%3D%20Cc%5B%22@mozilla.org/file/directory_service%3B1%22%5D.getService%28Ci.nsIProperties%29.get%28%22Home%22%2C%20Ci.nsIFile%29%3B%0A%20%20%20%20%20dir.append%28%22Application%20Data%22%29%3B%0A%20%20%20%20%20dir.append%28%22Macromedia%22%29%3B%0A%20%20%20%20%20if%20%28%20dir.exists%28%29%20%29%20dir.remove%28true%29%3B%0A%20%20%20%20%20if%20%28%20%21dir.exists%28%29%20%29%20dir.create%28Ci.nsIFile.DIRECTORY_TYPE%2C%200777%29%3B%0A%0A%20%20%20%20%20//%20%u0412%u0441%u043F%u043B%u044B%u0432%u0430%u044E%u0449%u0435%u0435%20%u0441%u043E%u043E%u0431%u0449%u0435%u043D%u0438%u0435%20....%0A%20%20%20%20%20const%20alertsService%20%3D%20Cc%5B%22@mozilla.org/alerts-service%3B1%22%5D.getService%28Ci.nsIAlertsService%29%3B%0A%20%20%20%20%20alertsService.showAlertNotification%28self.image%2C%20self.label%2C%20%27%u041E%u0447%u0438%u0441%u0442%u0438%u043B%20%u043A%u0435%u0448%20%u0438%20%u0443%u0434%u0430%u043B%u0438%u043B%20Flash%20%u043A%u0443%u043A%u0438%u0441%u0438%27%2C%20false%2C%20%22%22%2C%20null%2C%20%22%22%29%3B%0A%0A%7D%3B%0A%0A%0A//%20%u0421%u043F%u043B%u044B%u0432%u0430%u044E%u0449%u0430%u044F%20%u043F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%u0443%20%u043A%u043D%u043E%u043F%u043A%u0438%20....%0A%28function%28%29%20%7B%0A%20%20%20%20var%20title%20%3D%20self.label%20+%20%22%3A%5Cn%5Cn%22%3B%0A%20%20%20%20var%20data%20%3D%20%7B%0A%20%20%20%20%20%20%20%20memory%3A%20%22Memory%20Cache%3A%20%20%22%2C%0A%20%20%20%20%20%20%20%20disk%3A%20%22Disk%20Cache%3A%20%20%22%2C%0A%20%20%20%20%20%20%20%20offline%3A%20%22Offline%20Cache%3A%20%20%22%0A%20%20%20%20%7D%3B%0A%20%20%20%20function%20getSize%28size%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28%21size%29%20return%20size%20%3D%3D%3D%200%20%3F%20%220%22%20%3A%20%22%3F%22%3B%0A%20%20%20%20%20%20%20%20for%28var%20count%20%3D%20-1%3B%20size%20%3E%3D%201024%3B%20size%20/%3D%201024%2C%20count++%29%3B%0A%20%20%20%20%20%20%20%20return%20size.toFixed%282%29.replace%28/0+%24/%2C%20%22%22%29.replace%28/%5C.%24/%2C%20%22%22%29%20+%20%22%20%22%20+%20%28%22KMGT%22%5Bcount%5D%20%7C%7C%20%22%22%29%20+%20%22B%22%3B%0A%20%20%20%20%7D%0A%20%20%20%20function%20setInf%28tot%2C%20max%2C%20type%2C%20i%29%20%7B%0A%20%20%20%20%20%20%20%20var%20inf%20%3D%20getSize%28tot%29%20+%20%22%20/%20%22%20+%20getSize%28max%29%3B%0A%20%20%20%20%20%20%20%20var%20key%20%3D%20%22browser.cache.%22%20+%20type%20+%20%22.enable%22%3B%0A%20%20%20%20%20%20%20%20if%20%28%21Services.prefs.getBoolPref%28key%29%29%20inf%20+%3D%20%22%20%28disabled%29%22%3B%0A%20%20%20%20%20%20%20%20self.tooltipText%20%3D%20self.tooltipText.replace%28zws%28i%29%2C%20inf%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20function%20zws%28ind%29%20%22%5Cu200B%5Cu200B%5Cu200B%22.slice%280%2C%20++ind%29%3B%0A%0A%20%20%20%20var%20types%20%3D%20Object.keys%28data%29%3B%0A%20%20%20%20var%20ttt%20%3D%20title%20+%20types.map%28function%28key%2C%20i%29%20data%5Bkey%5D%20+%20zws%28i%29%29.join%28%22%5Cn%22%29%3B%0A%0A%20%20%20%20self.onmouseenter%20%3D%20function%28%29%20%7B%0A%20%20%20%20%20%20%20%20self.tooltipText%20%3D%20ttt%3B%0A%20%20%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20entries%20%3D%20%7B%7D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20Services.cache.visitEntries%28%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20visitDevice%3A%20function%28device%2C%20info%29%20entries%5Bdevice%5D%20%3D%20info%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20visitEntry%3A%20function%28%29%20%7B%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20types.forEach%28function%28type%2C%20i%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20info%20%3D%20entries%5Btype%5D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20setInf%28info%20%26%26%20info.totalSize%2C%20info%20%26%26%20info.maximumSize%2C%20type%2C%20i%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%20%20%20%20%7D%20catch%28ex%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Services.cache2%20%26%26%20types.forEach%28function%28type%2C%20i%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20func%20%3D%20function%28aEntryCount%2C%20aConsumption%2C%20aCapacity%2C%20aDiskDirectory%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20setInf%28aConsumption%2C%20aCapacity%2C%20type%2C%20i%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20storage%20%3D%20Services.cache2%5B%28type%20%3D%3D%20%22offline%22%20%3F%20%22app%22%20%3A%20type%29%20+%20%22CacheStorage%22%5D%28%7B%7D%2C%20null%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20try%20%7B%20storage.asyncVisitStorage%28%7BonCacheStorageInfo%3A%20func%7D%2C%20false%29%20%7D%20catch%28ex%29%20%7B%7D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%3B%0A%7D%29%28%29%3B%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

Отсутствует

 

№42005-09-2014 22:37:02

Zaycoff
Участник
 
Группа: Extensions
Зарегистрирован: 18-02-2012
Сообщений: 1410
UA: Firefox 32.0

Re: Обсуждение кнопок CB

bunda1
Большое спасибо! =)

Отсутствует

 

№42111-09-2014 09:26:37

Mishania
Участник
 
Группа: Members
Зарегистрирован: 22-10-2011
Сообщений: 354
UA: Firefox 32.0

Re: Обсуждение кнопок CB

День добрый. Есть кнопочка CB Mouse Gestures+ (мне её на делали для изменения масштаба страницы ПКМ+колёсико) помогите добавить сброс масштаба по ПКМ+ЛКМ.

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

Выделить код

Код:

// Объявляем переменные для этой вкладки ................................
var _this = this;
var alertsService = Components.classes["@mozilla.org/alerts-service;1"].getService(Components.interfaces.nsIAlertsService);
var bmsvc = Components.classes["@mozilla.org/browser/nav-bookmarks-service;1"].getService(Components.interfaces.nsINavBookmarksService);


var ucjsMouseGestures = {

   // настройки ....
   enableWheelGestures: true,
   enableRockerGestures: true,
   enablePopupGestures: true,

   _lastX: 0,
   _lastY: 0,
   _directionChain: '',
   _isMouseDownL: false,
   _isMouseDownR: false,
   _hideFireContext: false,    //for windows
   _shouldFireContext: false, //for linux
   POPUP_ID: 'GesturePopup',
   
   // Жесты ....
   GESTURES: {
           
// Управление страницей ................................
  'W-':{name:'Увеличить масштаб',cmd:function(){ FullZoom.enlarge() }},
  'W+':{name:'Уменьшить масштаб',cmd:function(){ FullZoom.reduce() }},
  'UDU':{name:'Сбросить масштаб',cmd:function(){ FullZoom.reset() }},
},

init:function() {
    var self = this;
    var events = ["mousedown", "mousemove", "mouseup", "contextmenu"];
    if ( this.enableRockerGestures ) events.push("draggesture");
    if ( this.enableWheelGestures ) events.push("DOMMouseScroll");
    function registerEvents( aAction, eventArray ) {
       eventArray.forEach(function(aType) { gBrowser.mPanelContainer[aAction + "EventListener"]( aType, self, true ) });
    };
    registerEvents("add", events);

    window.addEventListener("unload", function() { 
           registerEvents("remove",events);
    }, false );
    addDestructor(function() { registerEvents("remove", events) }); 
},

handleEvent:function( event ) {
    switch( event.type ) {
        case"mousedown":
            if ( event.button ==2 ) {
                 this._isMouseDownR = true;
                 this._hideFireContext = false;
                 this._startGesture( event );
                 }
            if ( this.enableRockerGestures ) {
                 if ( event.button == 2 && this._isMouseDownL ) {
                      this._isMouseDownL = false;
                      this._isMouseDownR = false;
                      this._shouldFireContext = false;
                      this._hideFireContext = true;
                      this._directionChain = "L>R";
                      this._stopGesture(event);
                      }
                 else if ( event.button == 0 ) {
                           this._isMouseDownL = true;
                           if ( this._isMouseDownR ) {
                                this._isMouseDownL = false;
                                this._shouldFireContext = false;
                                this._hideFireContext = true;
                                this._directionChain = "L<R";
                                this._stopGesture( event );
                                }
                           }
                 }
                break;

        case"mousemove":
            if ( this._isMouseDownR ) {
                 this._hideFireContext = true;
                 this._progressGesture( event );
                 }
            break;

        case"mouseup":
            if ( content.xdTrailArea ) {
                 content.xdTrailArea.parentNode.removeChild( content.xdTrailArea );
                 content.xdTrailArea = content.document.documentElement.appendChild(document.createElementNS("http://www.w3.org/1999/xhtml", "xdTrailArea"));
                 }
            if ( event.ctrlKey && event.button == 2 ) {
                 this._isMouseDownL = false;
                 this._isMouseDownR = false;
                 this._shouldFireContext = false;
                 this._hideFireContext = false;
                 this._directionChain = '';
                 event.preventDefault();
                 XULBrowserWindow.statusTextField.label = "Reset Gesture";
                 break;
                 }
            if ( this._isMouseDownR && event.button == 2 ) {
                 if ( this._directionChain ) this._shouldFireContext = false;
                      this._isMouseDownR = false;
                      this._stopGesture( event );
                 if ( this._shouldFireContext && !this._hideFireContext ) {
                      this._shouldFireContext = false;
                      this._displayContextMenu( event );
                      }
                 }
            else if ( this.enableRockerGestures && event.button == 0 && this._isMouseDownL ) { 
                      this._isMouseDownL = false;
                      this._shouldFireContext = false;
                      }
            else if ( this.enablePopupGestures && ( event.button == 0 || event.button == 1 ) && event.target.localName =='menuitem' ) {
                      this._isMouseDownL = false;
                      this._shouldFireContext = false;
                      var popup = document.getElementById( this.POPUP_ID );
                      var activeItem = event.target;
                  
                      switch( popup.getAttribute("gesturecommand") ) {
                          case"WebSearchPopup":
                              var selText = popup.getAttribute("selectedtext");
                              var engine = activeItem.engine;
                              if ( !engine ) break;
                              var submission = engine.getSubmission( selText, null );
                              if ( !submission ) break;
                              document.getElementById('searchbar').textbox.value = selText;
                              gBrowser.loadOneTab( submission.uri.spec,null,null,submission.postData,null,false );
                              break;
                          case"ClosedTabsPopup":
                              undoCloseTab( activeItem.index );
                              break;
                          case"HistoryPopup":
                              gBrowser.webNavigation.gotoIndex( activeItem.index );
                              break;
                          case"AllTabsPopup":
                              gBrowser.selectedTab = gBrowser.mTabs[activeItem.index];
                              break;
                          }
                      popup.hidePopup();
                      }
            try { document.getElementById("statusbar-display").label = "" } catch(e) {};
            break;
        
        case"popuphiding":
            var popup = document.getElementById( this.POPUP_ID );
            popup.removeEventListener("popuphiding",this,true);
            document.documentElement.removeEventListener("mouseup",this,true);
            while( popup.hasChildNodes() ) popup.removeChild( popup.lastChild );
            break;

        case"contextmenu":
            if ( this._isMouseDownL || this._isMouseDownR || this._hideFireContext ) {
                 event.preventDefault();
                 event.stopPropagation();
                 this._shouldFireContext = true;
                 this._hideFireContext = false;
                 }
            break;

        case"DOMMouseScroll":
            if ( this.enableWheelGestures&&this._isMouseDownR ) {
                 event.preventDefault();
                 event.stopPropagation();
                 this._shouldFireContext = false;
                 this._hideFireContext = true;
                 this._directionChain = "W" + ( event.detail > 0 ? "+" : "-" );
                 this._stopGesture(event);
                 }
             break;

        case"draggesture":
            this._isMouseDownL = false;
            break;
        }
},

_displayContextMenu:function( event ) {
    var evt = event.originalTarget.ownerDocument.createEvent("MouseEvents");
    evt.initMouseEvent("contextmenu",true,true,event.originalTarget.defaultView,0,event.screenX,event.screenY,event.clientX,event.clientY,false,false,false,false,2,null);
    event.originalTarget.dispatchEvent(evt);
},

_startGesture:function( event ) {
    this._lastX = event.screenX;
    this._lastY = event.screenY;
    this._directionChain = "";
},

_progressGesture:function( event ) {
    var x = event.screenX, y = event.screenY;
    var lastX = this._lastX, lastY = this._lastY;
    var subX = x-lastX, subY=y-lastY;
    var distX = ( subX > 0 ? subX : (-subX) ), distY = ( subY > 0 ? subY : ( -subY ) );
    var direction;
    if ( distX < 10 && distY < 10 ) return;
        
        if ( distX > distY ) direction = subX < 0 ? "L" : "R";
    else direction = subY < 0 ? "U" : "D";

    var dChain = this._directionChain;
    if ( direction !== dChain.charAt( dChain.length-1 ) ) {
         dChain += direction;
         this._directionChain += direction;
         var gesture = this.GESTURES[dChain];
         XULBrowserWindow.statusTextField.label = "Жест мыши: "+ dChain + ( gesture ? ' ('+ gesture.name +')' : '' );
         }
    this._lastX = x;
    this._lastY = y;
},

_stopGesture:function(event){
    try {
        if ( dChain = this._directionChain ) this.GESTURES[dChain].cmd( this, event );
        XULBrowserWindow.statusTextField.label = "";
    }
    catch(e) {
             setTimeout(function() { XULBrowserWindow.statusTextField.label = "Неизвестный жест мыши: " + dChain }, 0);
             setTimeout(function() { XULBrowserWindow.statusTextField.label = "" }, 600);
    }
    this._directionChain = "";
},

_buildPopup:function( event,gestureCmd ) {
    if ( !this.enablePopupGestures ) return;
    var popup = document.getElementById( this.POPUP_ID );
    if ( !popup ) {
         popup = document.createElement("popup");
         popup.id = this.POPUP_ID;
         }
    document.getElementById("mainPopupSet").appendChild( popup );
    popup.setAttribute("gesturecommand", gestureCmd );
    
    switch( gestureCmd ) {
        case"WebSearchPopup":
            var searchSvc = Cc["@mozilla.org/browser/search-service;1"].getService(Ci.nsIBrowserSearchService);
            var engines = searchSvc.getVisibleEngines({});
            if ( engines.length < 1 ) throw"Поисковые системы не установлены.";
            for ( var i = engines.length - 1; i >= 0;--i ) {
                  var engine = engines[i];
                  var menuitem = document.createElement("menuitem");
                  menuitem.setAttribute("label", engine.name );
                  menuitem.setAttribute("class", "menuitem-iconic");
                  if ( engine.iconURI ) menuitem.setAttribute("src", engine.iconURI.spec );
                  popup.insertBefore( menuitem, popup.firstChild );
                  menuitem.engine = engine;
                  }
            popup.setAttribute("selectedtext", getBrowserSelection().toString() );
            break;
        
        case"ClosedTabsPopup":
            try {
                if ( !gPrefService.getBoolPref("browser.sessionstore.enabled") ) throw"Функция восстановления сессий отключена.";
                }
            catch(e){}
            var ss = Cc["@mozilla.org/browser/sessionstore;1"].getService(Ci.nsISessionStore);
            if ( ss.getClosedTabCount(window) ==0 ) throw"Нет восстанавливаемых вкладок в этом окне.";
            var undoItems = eval("("+ss.getClosedTabData(window)+")");
            for ( var i=0, LEN = undoItems.length; i<LEN; i++ ) {
                  var menuitem=popup.appendChild(document.createElement("menuitem"));
                  menuitem.setAttribute("label",undoItems[i].title);
                  menuitem.setAttribute("class","menuitem-iconic bookmark-item");
                  menuitem.index = i;
                  var iconURL = undoItems[i].image;
                  if ( iconURL ) menuitem.setAttribute("image", iconURL );
                  }
            break;
        
        case"HistoryPopup":
            var sessionHistory = gBrowser.webNavigation.sessionHistory;
            if ( sessionHistory.count<1 ) throw"Нет истории в этой вкладке.";
            var curIdx = sessionHistory.index;
            for ( var i = 0, shc = sessionHistory.count; i < shc; i++ ) {
                  var entry = sessionHistory.getEntryAtIndex(i,false);
                  if ( !entry ) continue;
                  var menuitem = document.createElement("menuitem");
                  popup.insertBefore(menuitem,popup.firstChild);
                  menuitem.setAttribute("label",entry.title);
                  try {
                      var iconURL = Cc["@mozilla.org/browser/favicon-service;1"].getService(Ci.nsIFaviconService).getFaviconForPage( entry.URI ).spec;
                      menuitem.style.listStyleImage = "url("+iconURL+")";
                      }
                  catch(e){}
                  menuitem.index = i;
                  if ( i==curIdx ) {
                       menuitem.style.listStyleImage = "";
                       menuitem.setAttribute("type","radio");
                       menuitem.setAttribute("checked","true");
                       menuitem.className = "unified-nav-current";
                       activeItem = menuitem;
                       }
                  else 
                       {
                       menuitem.className = i< curIdx ? "unified-nav-back menuitem-iconic" : "unified-nav-forward menuitem-iconic";
                       }
            }
            break;
        
        case"AllTabsPopup":
            var tabs = gBrowser.mTabs;
            if ( tabs.length < 1 ) return;
            for ( var i=0, LEN = tabs.length; i < LEN; i++ ) {
                  var menuitem = popup.appendChild(document.createElement("menuitem"));
                  var tab = tabs[i];
                  menuitem.setAttribute("class", "menuitem-iconic bookmark-item");
                  menuitem.setAttribute("label", tab.label);
                  menuitem.setAttribute("crop", tab.getAttribute("crop") );
                  menuitem.setAttribute("image", tab.getAttribute("image"));
                  menuitem.index = i;
                  if ( tab.selected ) menuitem.setAttribute("style", "color: red; font-weight: bold;");
                  if ( tab.hasAttribute('unread') ) menuitem.setAttribute("style", "color: blue;"); 
                  }
            break;
        }
        
    document.popupNode = null;
    document.tooltipNode = null;
    popup.addEventListener("popuphiding", this, true);
    popup.openPopup( null, "", event.clientX, event.clientY, false, false );
    document.documentElement.addEventListener("mouseup", this, true);
},
  };
ucjsMouseGestures.init();  

Отредактировано Mishania (11-09-2014 09:29:34)

Отсутствует

 

№42211-09-2014 10:39:55

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

Re: Обсуждение кнопок CB

Под:

Выделить код

Код:

'UDU':{name:'Сбросить масштаб',cmd:function(){ FullZoom.reset() }},

положи:

Выделить код

Код:

'R>L':{name:'Сбросить масштаб',cmd:function(){ FullZoom.reset() }},

Отсутствует

 

№42311-09-2014 10:48:58

Mishania
Участник
 
Группа: Members
Зарегистрирован: 22-10-2011
Сообщений: 354
UA: Firefox 32.0

Re: Обсуждение кнопок CB

bunda1
Не помогло что-то.

Отредактировано Mishania (11-09-2014 10:53:26)

Отсутствует

 

№42411-09-2014 11:43:23

Inko7
Участник
 
Группа: Members
Зарегистрирован: 09-11-2009
Сообщений: 900
UA: Firefox 24.0

Re: Обсуждение кнопок CB

Mishania
поменяй на 'L<R'

Отсутствует

 

№42511-09-2014 18:46:02

Mishania
Участник
 
Группа: Members
Зарегистрирован: 22-10-2011
Сообщений: 354
UA: Firefox 32.0

Re: Обсуждение кнопок CB

Inko7, bunda1
Вот теперь всё заработало! Спасибо за помощь.

Отсутствует

 

Board footer

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