Удалить закладку средним кликом на закладке(Firefox 10 +)
Автор: bunda1
Описание: Kод дает возможность удалить закладку средним кликом на закладке, если папка с закладкой находится на панели закладок или в меню закладкок.
Использование: положите код в любую Custom Buttons кнопку, в инициализацию. Не обязательно создавать новую CB кнопку, можно использовать уже существующую.

Выделить код

Код:

// Удалить закладку средним кликом на закладке .............................................................
window.addEventListener("mouseup", function(aEvent) {

    var target = aEvent.originalTarget;
    
    if ( aEvent.button !== 1) return;
    if ( target.localName!="menuitem" 
         || !(target._placesNode && PlacesUtils.nodeIsURI(target._placesNode) ) ) return;
         aEvent.preventDefault();
         aEvent.stopPropagation();
         
         var itemId = target._placesNode.itemId;
         //custombuttons.alertSlide("Удалил закладку", PlacesUtils.bookmarks.getItemTitle(itemId) );
         PlacesUtils.bookmarks.removeItem(itemId);
                    
}, false);

прикольная кнопка, но по-моему раньше bunda1 хотел повесить на ПКМ


iDev.Pi пишет

А можно на средний клик повесить действие "открыть в новой вкладке" (как это сейчас и есть), но так, чтоб при этом меню закладок не закрывалось?

Stay-Open Menu :: Дополнения Firefox

iDev.Pi пишет

А можно на средний клик повесить действие "открыть в новой вкладке" (как это сейчас и есть), но так, чтоб при этом меню закладок не закрывалось?

Попробую.

bunda1 пишет

Kод дает возможность удалить закладку средним кликом на закладке, если папка с закладкой находится на панели закладок или в меню закладкок.

А как ты тогда открываешь закладки в новой вкладке, если СКМ занят?

LongLogin
спасибо, сойдёт

08-10-2012 13:05:49

bunda1 пишет

Попробую.

Не стоит, Stay-Open Menu, который тут посоветовали - меня устроит.

voqabuhe пишет

А как ты тогда открываешь закладки в новой вкладке, если СКМ занят?

У меня по ЛКМ открываютса Открыть в новой вкладке(Firefox 3.6 +  )

08-10-2012 18:19:35

LongLogin пишет

прикольная кнопка, но по-моему раньше bunda1 хотел повесить на ПКМ

Да хотел, но так проще.

08-10-2012 18:20:31

iDev.Pi пишет

Не стоит, Stay-Open Menu, который тут посоветовали - меня устроит.

Уже поздно.

а можно чтобы удаление происходило при нажатии ctrl+СКМ ? Или лучше просто клавишей Delete.

Удалить закладку => Ctrl + средний клик на закладке(Firefox 10 +)
Автор: bunda1
Описание: Kод дает возможность удалить закладку если нажать Ctrl и кликнуть средним кликом на закладке, если папка с закладкой находится на панели закладок или в меню закладок.

Если хотите удалять закладки левым кликом в коде надо поменять:

Выделить код

Код:

aEvent.button == 1

на

Выделить код

Код:

aEvent.button == 0


Использование: положите код в любую Custom Buttons кнопку, в инициализацию. Не обязательно создавать новую CB кнопку, можно использовать уже существующую.

Выделить код

Код:

// Удалить закладку ctrl + средний клик на закладке .............................................................
window.addEventListener("mouseup", function(aEvent) {

    var target = aEvent.originalTarget;
    if ( aEvent.ctrlKey && !aEvent.shiftKey && !aEvent.altKey && !aEvent.metaKey && aEvent.button == 1 ) {
         if ( target.localName !== "menuitem" || !(target._placesNode && PlacesUtils.nodeIsURI(target._placesNode) ) ) return;
              aEvent.preventDefault();
              aEvent.stopPropagation();
         
              var itemId = target._placesNode.itemId;
              PlacesUtils.bookmarks.removeItem(itemId);
         }          
}, false);
bunda1 пишет

Если хотите удалять закладки левым кликом в коде надо поменять:

При таком раскладе конфликтует с [CB]Открывать закладки левым кликом в новой вкладке не закрывая меню и удаляет, и открывает одновременно.

удаляет, и открывает одновременно

:D :lol:

была же идея удалять двойным правым кликом когда-то, но почему-то bunda1 свернул на кривую дорожку

LongLogin пишет

была же идея удалять двойным правым кликом когда-то, но почему-то bunda1 свернул на кривую дорожку

Всё bunda1 правильно делает, ты сначала с кнопками ознакомься, а потом встревай.:sick:

bunda1 пишет

aEvent.preventDefault();
aEvent.stopPropagation();

и

bunda1 пишет

}, false);

Вопрос: нет ли тут противоречия ? ( вопрос не риторический - хочу знать )

LongLogin пишет

была же идея удалять двойным правым кликом когда-то, но почему-то bunda1 свернул на кривую дорожку

Нифига, я твёрдо стою на пути исправления, просто двойным правым кликом не получается.

Dumby пишет

Вопрос: нет ли тут противоречия ?

:( я не понял вопрос но противоречия не вижу.

bunda1

OK, попробую объяснить

как я проверял
Сделал кнопку, положил этот код в инициализацию,
Изменяю    aEvent.button == 1    на    aEvent.button == 0.
Далее изменяю false/true + restart и жму Attributes Inspector,
тогда
если true - закладка удаляется, DOM Inspector не открывается,
если false - DOM Inspector открывается, закладка не удаляется.
Видимо есть разница, посмотри параметр useCapture.
А может быть померещилось, что думаешь ?

Dumby пишет

DOM Inspector не открывается

Ну правильно, Attributes Inspector ждет, когда будет click, а закладка исчезает уже на mousedown.
А если включить

Выделить код

Код:

var _debug = true;

, еще и

Выделить код

Код:

if("defaultPrevented" in e ? e.defaultPrevented : e.getPreventDefault())
                _log('Warning! Default action for "' + e.type + '" event is already cancelled!');

, скорее всего, вылезет.

Infocatcher

Если ты подумал, что я в своём сообщении писал что-то именно про Attributes Inspector,
то - и в мыслях небыло, просто взбрело в голову проверить разницу между true и false именно так.
В любом случае спасибо за подробности.
Но хотелось, всего-лишь, подтверждения/опровержения, что в данном случае,
раз уж «aEvent.preventDefault(); ...» , то последний аргумент listener'а должен быть true.

Dumby пишет

раз уж «aEvent.preventDefault(); ...» , то последний аргумент listener'а должен быть true.

Не должен. Действие по умолчанию можно отменять когда угодно, разница только в том, что чем раньше отменишь, тем больше скриптов смогут на это как-то отреагировать (если до них вообще это событие дойдет).

Поставил удаление на ПКМ, но всплывает стандартное меню в добавок, можно ли его заблокировать?

Удалить закладку двойным правым кликом на закладке( Firefox 10 + )
Автор: bunda1
Версия: от 13.10.2014.
Использование: создайте новую Custom Buttons кнопку и положите код в инициализацию или положите код в инициализацию уже существующей кнопки.

Выделить код

Код:

// Удалить закладку двойным правым кликом на закладке, от 13.10.2014. ..............
function removeBookmark(e) {
   var target = e.target; 
   if ( target._placesNode && target._placesNode.type ) return;
     
   if ( removeBookmark.open ) {
        e.preventDefault();
        try { PlacesUtils.bookmarks.removeItem( target._placesNode.itemId ) } catch(e) {};
        }
   removeBookmark.open = true;
   setTimeout(function() removeBookmark.open = false, 600 );
};               
addEventListener("mouseup", removeBookmark );

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

#placesContext
{display: none !important;}

bunda1 пишет

Удалить закладку двойным правым кликом на закладке

В [nightly] после удаления закладки и последующем перемещение курсора на соседние закладки меню закрывается. Поправь, плиз.

voqabuhe пишет

В [nightly] после удаления закладки и последующем перемещение курсора на соседние закладки меню закрывается. Поправь, плиз.

Вроде исправил: Удалить закладку двойным правым кликом на закладке

bunda1 пишет

Вроде исправил

У меня всё равно закрывается.

У меня всё равно закрывается.

Это как по умолчанию закрывается или как то иначе.

bunda1
Ну как в первоначальном сообщение, так ничего и не изменилось.

Я сейчас проверил на последнем [nightly] и вроде без проблем.

bunda1
ОК буду тогда у себя искать причину.

bunda1
Причина оказалась в конфликте с кнопкой [CB]Автоматически открыть - закрыть меню | Форум Mozilla Россия. А как оставить только удаление закладок, без удаление папок закладок, или удалять папку с горячей клавишей? А то пару раз удалял случайно папку, потом долго восстанавливал...

voqabuhe пишет

А как оставить только удаление закладок, без удаление папок закладок

Удалить закладку двойным правым кликом на закладке

bunda1 пишет

Удалить закладку двойным правым кликом на закладке

Спасибо.

А можно так?
Удалить закладку, двойным левым  кликом на закладке, не закрывая меню, пока курсор в области меню.
По крайней мере, на панели закладок.

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

Stakhovsky пишет

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

Выделить код

Код:

// Длинным правым кликом открывать и удалять закладки, от 16.05.2016. ..................
(()=> {
   function handleEvent(e) { 
      var target = e.originalTarget;
      try { 
           var sidebar = target.ownerDocument.defaultView.top !== content 
               && target.id == 'bookmarks-view-children';
      } catch(e) { return; };

      if ( (!sidebar && !target._placesNode) || e.button !== 2 ) return;

      if ( sidebar ) {
           var tree = target.parentNode;
           var box = tree.treeBoxObject;
           var row = box.getRowAt(e.clientX, e.clientY); 
           var node = tree.view.nodeForTreeIndex(row);            
           }
      var node = sidebar ? node : target._placesNode,
          id = node.itemId, uri = node.uri, type = e.type;
           
      if ( PlacesUtils.nodeIsContainer(node) ) return;
      window.clearTimeout(handleEvent.timer);           

      if ( type == 'mousedown' ) {                      
           handleEvent.flag = false;       
           handleEvent.timer = setTimeout(()=> {
               handleEvent.flag = true;               
               
               gBrowser.loadOneTab(uri, {relatedToCurrent:true, inBackground:false,  referrerURI:null}); 
               
               var menu = target.parentNode;
               if ( !menu || menu.localName !== 'menupopup' ) return;
               for ( var node = menu; node; node = node.parentNode )
                     node.nodeName == 'menupopup' && node.hidePopup();
           }, 450);  
           }

      if ( type == 'click' && handleEvent.flag ) {
           e.preventDefault();
           e.stopPropagation();
           
           setTimeout(()=> PlacesUtils.bookmarks.removeItem(id), 500);
           }
   };
   ["click", "mousedown"].forEach(type=> addEventListener(type, handleEvent, true) );
})();

В боковой панели закладок тоже работает.

bunda1
Открывать открывает, но не удаляет, у вас удаляет? это у меня косяк какой то?

Проверил еще на palemoon 25, то же самое.

Stakhovsky пишет

bunda1
Открывать открывает, но не удаляет, у вас удаляет? это у меня косяк какой то?

Исправил

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

Stakhovsky пишет

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

Сегодня 20:50:05

bunda1
Круто, спасибо большое.

bunda1, а вы бы не могли еще если можно, пожалуйста, добавить эту же функцию только сразу для всех закладок в папке? Например таким же длинным пкм по папке. или добавить пункт в низу списка закладок.