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

Mozilla Россия — свежие версии программ Mozilla, а также масса полезной информации по каждому продукту.
  • Форумы
  •  » Сustom Buttons
  •  » [CB]Открывать закладки левым кликом в новой вкладке не закрывая меню

№7609-06-2019 10:37:39

Stkvsky
Участник
 
Группа: Members
Зарегистрирован: 26-06-2012
Сообщений: 1699
UA: Firefox 42.0

Re: [CB]Открывать закладки левым кликом в новой вкладке не закрывая меню

bunda1
Вы бы не могли пожалуйста добавить в эту кнопку, чтобы закладки открывались в активной вкладке?

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

Выделить код

Код:

/* Открывать закладки левым кликом в новой вкладке не закрывая меню закладок
   удалять закладки средним кликом на закладке .............................*/
function openRemoveBook(aEvent) { 
   
    var target = aEvent.originalTarget;
        
    // стоп, если не левый клик и закладка из меню закладок ....
    if ( target.localName !== "menuitem" || !(target._placesNode && PlacesUtils.nodeIsURI(target._placesNode) ) ) return;
               
         var bookMenu = target.parentNode;
        
         // стоп, если не левый клик и закладка из меню закладок ....
         if ( target.localName !== "menuitem" || !(target._placesNode && PlacesUtils.nodeIsURI(target._placesNode) ) ) return;
               
         // если левый клик ....    
         if ( aEvent.button == 0) {
              aEvent.preventDefault();
              aEvent.stopPropagation();
         
              // открыть в новой или в текущей вкладке если это указанная вкладка ....
              var itemUri = target._placesNode.uri; // получить адрес закладки 
              var current = ["about:newtab", "about:blank", "chrome://browser/content/bookmarks/bookmarksPanel.xul"];
              (current.indexOf(content.location.href) !== -1 || aEvent.ctrlKey)? gBrowser.loadURI( itemUri ): gBrowser.addTab( itemUri );
              };
       
         // если средний клик ....    
         if ( aEvent.button == 1) {
              aEvent.preventDefault();
              aEvent.stopPropagation();
              
              // удалить закладку ....
              var itemId = target._placesNode.itemId;
              PlacesUtils.bookmarks.removeItem(itemId);
              };
          
         // блокировать повторный запуск обработчика при открытии несколько закладок из одного меню закладок ....
         if ( this.stopListener ) return;
             this.stopListener = true;
              
         // обработчик закрывает меню при ухода мыши с меню и удаляет себя ....
         window.addEventListener('mouseover', function(event) { 
         var name = event.target.nodeName; 
         if  ( name == 'menu' || name == 'menupopup' || name == 'menuitem' || name == 'menuseparator') return;
               setTimeout(function() { bookMenu.hidePopup() }, 400); // закрыть меню через 400 ms
               window.removeEventListener("mouseover", arguments.callee, false);
               this.stopListener = false; // удалить флаг
         }, false);                
}
window.addEventListener("mouseup", openRemoveBook, false);

this.onDestroy = function() {
    window.removeEventListener("mouseup", openRemoveBook,  false);
};

Отсутствует

 

№7709-06-2019 15:48:48

Garalf
Участник
 
Группа: Members
Зарегистрирован: 19-09-2017
Сообщений: 313
UA: Firefox 66.0

Re: [CB]Открывать закладки левым кликом в новой вкладке не закрывая меню

Stkvsky пишет

чтобы закладки открывались в активной вкладке?

И чтобы в 66+ работала...

Отсутствует

 

№7810-06-2019 22:22:13

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

Re: [CB]Открывать закладки левым кликом в новой вкладке не закрывая меню

Stkvsky пишет

bunda1
Вы бы не могли пожалуйста добавить в эту кнопку, чтобы закладки открывались в активной вкладке?

Garalf пишет

И чтобы в 66+ работала...

:/

Выделить код

Код:

/* Открывать закладки левым кликом в новой вкладке не закрывая меню закладок
   удалять закладки средним кликом на закладке, от 09.06.2019. .............*/
function openBook(e, target = e.originalTarget) { 
   if ( target.localName != "menuitem" 
        || !(target._placesNode && PlacesUtils.nodeIsURI(target._placesNode) ) ) return;
               
   e.preventDefault();
   e.stopPropagation();   
   
   // открыть закладку в новой вкладке ....
   if ( e.button == 0 && e.type == 'mouseup' ) {         // ЛКМ 
        // открыть в новой вкладке или для указанных адресов в текущей вкладке ....
        var itemUri = target._placesNode.uri;
        var array = ["about:newtab", "about:blank", "chrome://browser/content/bookmarks/bookmarksPanel.xul"];
        var where = (~array.indexOf(gBrowser.currentURI.spec) || e.ctrlKey) ? "current" : "tab"; 
       
        openLinkIn(itemUri, where, {
           inBackground: false,
           relatedToCurrent: true,
           triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal()
        });

        setTimeout(()=> document.getElementById('placesContext').hidePopup(), 50);
        };
    
    // удалить закладку ....
    if ( e.button == 1 ) {   // СКМ
         setTimeout(()=> {
            var itemId = target._placesNode.itemId;
            try { PlacesUtils.bookmarks.removeItem(itemId) } catch(e) {};                   
         }, 0);
         };       

    // автоматически закрыть все меню закладок при уходе курсора .... 
    var menu = target.parentNode;
    if ( !menu || menu.localName != 'menupopup' ) return;
                     
    menu.onmouseover =()=> menu.f = true;
    menu.onmouseleave =()=> { 
       menu.f = false;        
       setTimeout(()=> {   
          if ( menu.f ) return;
          for ( var node = menu; node; node = node.parentNode )
                node.nodeName == 'menupopup' && node.hidePopup();
          menu.onmouseleave = null;
       }, 500);    
    };        
}
!self.hasAttribute("initialized") && ["click", "mouseup"].forEach(type=> addEventListener(type, openBook, true));

Отсутствует

 

№7911-06-2019 06:26:13

bezuma
Участник
 
Группа: Members
Откуда: Москва
Зарегистрирован: 26-01-2014
Сообщений: 256
UA: Firefox 67.0

Re: [CB]Открывать закладки левым кликом в новой вкладке не закрывая меню

bunda1
Кнопка работает на ура, но не вызывается контекстное меню закладок, расположенных в папках на панели закладок, а в боковой панели все ОК. Можно поправить?

Отредактировано bezuma (12-01-2020 17:04:12)

Отсутствует

 

№8011-06-2019 07:19:03

Garalf
Участник
 
Группа: Members
Зарегистрирован: 19-09-2017
Сообщений: 313
UA: Firefox 66.0

Re: [CB]Открывать закладки левым кликом в новой вкладке не закрывая меню

bezuma пишет

не вызывается контекстное меню закладок, расположенных в папках на панели закладок

Да, подтверждаю. Есть такое. Просьба починить.

Отсутствует

 

№8111-06-2019 09:24:44

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

Re: [CB]Открывать закладки левым кликом в новой вкладке не закрывая меню

bezuma пишет

bunda1
Кнопка работает на ура, но не вызывается контекстное меню закладок, расположенных в папках на панели закладок, а в боковой панели все ОК. Можно поправить?

Выделить код

Код:

/* Открывать закладки левым кликом в новой вкладке не закрывая меню закладок
   удалять закладки средним кликом на закладке, от 11.06.2019. .............*/
function openBook(e, target = e.originalTarget) { 
   if ( target.localName != "menuitem" 
        || !(target._placesNode && PlacesUtils.nodeIsURI(target._placesNode) ) ) return;
               
   // блокировать действия по умолчанию для левого клика ....
   if ( e.button == 0 ) {   // ЛКМ 
        e.preventDefault();
        e.stopPropagation(); 
        };
        
   // открыть закладку в новой вкладке или для указанных адресов в текущей вкладке ....
   if ( e.button == 0 && e.type == "mouseup" ) {   // ЛКМ 
        var itemUri = target._placesNode.uri;
        var array = ["about:newtab", "about:blank", "chrome://browser/content/bookmarks/bookmarksPanel.xul"];
        var where = (~array.indexOf(gBrowser.currentURI.spec) || e.ctrlKey) ? "current" : "tab"; 
       
        openLinkIn(itemUri, where, {
           inBackground: false,
           relatedToCurrent: true,
           triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal()
        });

        setTimeout(()=> document.getElementById('placesContext').hidePopup(), 50);
        };
    
    // удалить закладку ....
    if ( e.button == 1 && e.type == "mouseup" ) {   // СКМ
         setTimeout(()=> {
            var itemId = target._placesNode.itemId;
            try { PlacesUtils.bookmarks.removeItem(itemId) } catch(e) {};                   
         }, 0);
         };       

    // автоматически закрыть все меню закладок при уходе курсора .... 
    var menu = target.parentNode;
    if ( !menu || menu.localName != 'menupopup' || e.type != 'click' || e.button == 2 ) return;
                     
    menu.onmouseover =()=> menu.f = true;
    menu.onmouseleave =()=> { 
       menu.f = false;        
       setTimeout(()=> {   
          if ( menu.f ) return;
          for ( var node = menu; node; node = node.parentNode )
                node.nodeName == 'menupopup' && node.hidePopup();
          menu.onmouseleave = null;
       }, 500);    
    };  
}
!self.hasAttribute("initialized") && ["click", "mouseup", "mousedown"].forEach(type=> addEventListener(type, openBook, true));

Отсутствует

 

№8211-06-2019 10:11:20

Stkvsky
Участник
 
Группа: Members
Зарегистрирован: 26-06-2012
Сообщений: 1699
UA: Firefox 42.0

Re: [CB]Открывать закладки левым кликом в новой вкладке не закрывая меню

bunda1
Благодарю

Отсутствует

 

№8311-06-2019 10:44:42

bezuma
Участник
 
Группа: Members
Откуда: Москва
Зарегистрирован: 26-01-2014
Сообщений: 256
UA: Firefox 67.0

Re: [CB]Открывать закладки левым кликом в новой вкладке не закрывая меню

bunda1
Спасибо, маэстро :) Теперь ОК

Отредактировано bezuma (11-06-2019 10:45:22)

Отсутствует

 
  • Форумы
  •  » Сustom Buttons
  •  » [CB]Открывать закладки левым кликом в новой вкладке не закрывая меню

Board footer

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