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); };
Отсутствует
bunda1
Вы бы не могли пожалуйста добавить в эту кнопку, чтобы закладки открывались в активной вкладке?
И чтобы в 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));
Отсутствует
bunda1
Кнопка работает на ура, но не вызывается контекстное меню закладок, расположенных в папках на панели закладок, а в боковой панели все ОК. Можно поправить?
Отредактировано bezuma (12-01-2020 17:04:12)
Отсутствует
не вызывается контекстное меню закладок, расположенных в папках на панели закладок
Да, подтверждаю. Есть такое. Просьба починить.
Отсутствует
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));
Отсутствует