difabor пишет1. Возможно ли создание кнопки которая будет имитировать открытие какого-то фолдера из бара закладок?
Custom_Buttons/Bookmarks_Folder at master · Infocatcher/Custom_Buttons · GitHub
difabor пишет2. Возможна ли работа кнопки не по кликам, а по фазам клика? Поясню подробнее, что я имею в виду.
Возможна конечно, я думаю с разным кликами + меню проблем нет. А вот как там открыть закладки не знаю, но думаю тоже возможно. Но лично мне такая кнопка субъективно не нравится.
Спасибо! Но я и не собирался создавать отдельные кнопки на закладки/фолдеры. Я предполагал "растворить" закладки/фолдеры в функциональных кнопках.
Другими словами, я предполагал "пришить" к функциональной кнопке (например, Memory Restart, 6 фолдеров, открывающихся по сочетаниям нажатий (Правое нажатие, затем левое, Левое, затем правое и т.д. всего возможно 6 таких сочетаний) с тем или иным фолдером - чтобы по каждому из этих сочетаний открывался список закладок/подфолдеров этого фолдера, по отпусканию второй из нажатых кнопок вызывалась бы выбранная закладка, по отпусканию первой из нажатых кнопок - страница бы заносилась в закладки.
При этом, например, Левое нажатие, Правый клик - это было бы загрузка первой закладки, из фолдера соответстветствующего Левому, затем правому нажатию. Почти аналогично бы страница заносилась бы в фолдер. То есть, мы бы имели одновременно и возможность выбора по контекстному меню и быстрый выбор.
difabor пишет4. Возможно ли работать по сочетанию кнопок мышки?
Если да, то к трём вариантам (левое/среднее/правое нажатие) добавилось бы ещё 6: л-с, л-п, с-л, с-п, п-л, п-с и при этом на каждое такое сочетание имелось бы два активных действия, а не одно - одна такая суперкнопка была бы эквивалентна примерно 20-ти обычным.Вот это как раз легче всего.
difabor пишет3. Возможна ли обработка двумерного списка?
Учитывая, что строка довольно большая, если её расцветить в несколько цветов - мы бы имели существенно больше возможностей на каждый менюитем.Обработка двумерного списка тоже возможна, насчёт расцветить не знаю.
Если расцветить невозможно - есть ли возможность как-то выделить участки - точками или каким-то другим путём?
Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©
Отсутствует
difabor ,
Нет, я не в попытке оспорить первенство, а к тому что чтобы продвинуть эти идеи в жизнь, нужно приложить тинанические усилия И после уже сложно будет себя считать неквалифицированным пользователем... но тогда потеряется первоночальный смысл начинания
Отредактировано Крошка Ру (24-09-2013 00:59:18)
Отсутствует
bunda1, а есть такая же кнопка, только чтобы СКМ (колёсико) открывать ссылки в новой фоновой вкладке не закрывая меню, а остальные кнопки действовали как полагается по умолчанию?
Отсутствует
bunda1, а есть такая же кнопка, только чтобы СКМ (колёсико) открывать ссылки в новой фоновой вкладке не закрывая меню, а остальные кнопки действовали как полагается по умолчанию?
Добавлено 09-05-2015 14:04:46
15-09-2013 14:51:40
Отредактировано bunda1 (09-05-2015 14:04:46)
Отсутствует
А для боковой панели закладок такое не сотворить?
// Управление закладками, от 25.10.2014. ................................ (function func() { // страницы где левый клик открывает закладку в текущей странице var current = ["about:newtab", "about:blank", "chrome://browser/content/bookmarks/bookmarksPanel.xul"]; const background = true; // открывать закладку в фоновой вкладке const nextToCurrent = false; // открывать закладку рядом с текущей вкладкой const menuAutoClose = true; // автоматически закрыть меню закладок при уходе курсора function handleClick(e) { var target = e.originalTarget; var sidebar = target.ownerDocument.defaultView.top !== content && target.id == 'bookmarks-view-children'; if ( !sidebar && !target._placesNode ) return; // стоп, если не закладка, папка, разделитель // получить закладку, адрес, папку и id закладки, другие переменные 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, button = e.button, type = e.type, isFolder = PlacesUtils.nodeIsContainer(node), isURI = PlacesUtils.nodeIsURI(node); // двойной клик добавляет закладку или удаляет закладку, разделитель .... if ( button !== 1 && type == 'mouseup' ) { if ( button == 0 && func.flag == true && isFolder ) { addBookmark(node, false); sidebar && tree.view.toggleOpenState(row); } if ( button == 2 && func.flag == true && !isFolder ) { setTimeout(function() { target.ownerDocument.getElementById("placesContext").hidePopup() try { PlacesUtils.bookmarks.removeItem(id) } catch(e) {}; }, 0); } func.flag = true; setTimeout(function() func.flag = false, 400 ); } if ( isFolder ) return; // стоп, если папка закладок if ( button == 0 ) window.clearTimeout( func.timer ); // сбросить таймер длинного клика // блокировать действие по умолчанию для клика и отжатия .... if ( button !== 2 && /click|mouseup/.test(type) ) { e.preventDefault(); e.stopPropagation(); } // левый длинный клик добавляет текущую вкладку в закладки под нажатой закладкой .... if ( button == 0 && type == 'mousedown' ) { func.loadBook = true; func.timer = setTimeout(function() { func.loadBook = false; addBookmark(node.parent, id); }, 400 ); } // левый клик открывает закладку в новой или текущей вкладке .... if ( button == 0 && type == 'mouseup' && func.loadBook && isURI ) { ( uri.startsWith("javascript") || current.indexOf(content.location.href) !== -1 || e.ctrlKey ) ? gBrowser.loadURI( uri ) : gBrowser.loadOneTab( uri, {relatedToCurrent: nextToCurrent, inBackground: background, referrerURI: null } ); } // средний клик открывает закладку в текущей вкладке .... if ( button == 1 && type == 'click' && isURI ) { gBrowser.loadURI( uri ); } // автоматически закрыть все меню закладок при уходе курсора .... var menu = target.parentNode; if ( !menuAutoClose || !menu || menu.localName !== 'menupopup' || type !== 'click' || button == 2 ) return; menu.onmouseover = function() menu.f = true; menu.onmouseleave = function() { menu.f = false; setTimeout(function() { if ( menu.f ) return; for ( var node = menu; node; node = node.parentNode ) node.nodeName == 'menupopup' && node.hidePopup(); menu.onmouseleave = null; }, 500); }; }; ["click", "dragstart", "mouseup", "mousedown"] .forEach(function(type) addEventListener(type, handleClick, true) ); // добавить страницу в закладки в указанной папке .... function addBookmark(folder, id) { var title = gBrowser.mCurrentTab.label; var folderId = PlacesUtils.getConcreteItemId(folder); var index = id ? PlacesUtils.bookmarks.getItemIndex(id) + 1 : 0; var readOnlyFolder = PlacesUtils.nodeIsQuery(folder) || PlacesUtils.annotations.itemHasAnnotation(folderId, PlacesUtils.LMANNO_FEEDURI); if ( !readOnlyFolder ) PlacesUtils.bookmarks.insertBookmark(folderId, gBrowser.currentURI, index, title); // всплывающая подсказка if ( id ) return; var al = Cc["@mozilla.org/alerts-service;1"].getService(Ci.nsIAlertsService); if ( readOnlyFolder ) { al.showAlertNotification("chrome://global/skin/icons/error-16.png", folder.title, "Не поддерживается"); return; } var icon = gBrowser.mCurrentTab.image || "chrome://global/skin/icons/information-16.png"; al.showAlertNotification(icon, "Добавил в папку " + (folder.title || "(без заголовка)") + ":", title.slice(0, 100)); }; })();
Отредактировано bunda1 (11-07-2015 12:30:57)
Отсутствует
bunda1, СКМ сделай пожалуйста открыть в новой фоновой вкладке.
// Управление закладками, от 25.10.2014. ................................ (function func() { // страницы где левый длинный клик открывает закладку в текущей странице var current = ["about:newtab", "about:blank", "chrome://browser/content/bookmarks/bookmarksPanel.xul"]; const background = false; // открывать закладку в фоновой вкладке const nextToCurrent = true; // открывать закладку рядом с текущей вкладкой const menuAutoClose = true; // автоматически закрыть меню закладок при уходе курсора function handleClick(e) { var target = e.originalTarget; var sidebar = target.ownerDocument.defaultView.top !== content && target.id == 'bookmarks-view-children'; if ( !sidebar && !target._placesNode ) return; // стоп, если не закладка, папка, разделитель // получить закладку, адрес, папку и id закладки, другие переменные 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, button = e.button, type = e.type, isFolder = PlacesUtils.nodeIsContainer(node), isURI = PlacesUtils.nodeIsURI(node); // двойной клик добавляет закладку или удаляет закладку, разделитель .... if ( button !== 1 && type == 'mouseup' ) { if ( button == 0 && func.flag == true && isFolder ) { addBookmark(node, false); sidebar && tree.view.toggleOpenState(row); } if ( button == 2 && func.flag == true && !isFolder ) { setTimeout(function() { target.ownerDocument.getElementById("placesContext").hidePopup() try { PlacesUtils.bookmarks.removeItem(id) } catch(e) {}; }, 0); } func.flag = true; setTimeout(function() func.flag = false, 400 ); } if ( isFolder ) return; // стоп, если папка закладок if ( button == 0 ) window.clearTimeout( func.timer ); // сбросить таймер длинного клика // блокировать действие по умолчанию для клика и отжатия .... if ( button !== 2 && /click|mouseup/.test(type) ) { e.preventDefault(); e.stopPropagation(); } // левый длинный клик добавляет текущую вкладку в закладки под нажатой закладкой .... if ( button == 0 && type == 'mousedown' ) { func.loadBook = true; func.timer = setTimeout(function() { func.loadBook = false; addBookmark(node.parent, id); }, 400 ); } // левый клик открывает закладку в новой или текущей вкладке .... if ( button == 0 && type == 'mouseup' && func.loadBook && isURI ) { ( uri.startsWith("javascript") || current.indexOf(content.location.href) !== -1 || e.ctrlKey ) ? gBrowser.loadURI( uri ) : gBrowser.loadOneTab( uri, {relatedToCurrent: nextToCurrent, inBackground: background, referrerURI: null } ); } // средний клик открывает закладку в текущей вкладке .... if ( button == 1 && type == 'click' && isURI ) { gBrowser.loadOneTab( uri, {relatedToCurrent: nextToCurrent, inBackground: true, referrerURI: null } ); } // автоматически закрыть все меню закладок при уходе курсора .... var menu = target.parentNode; if ( !menuAutoClose || !menu || menu.localName !== 'menupopup' || type !== 'click' || button == 2 ) return; menu.onmouseover = function() menu.f = true; menu.onmouseleave = function() { menu.f = false; setTimeout(function() { if ( menu.f ) return; for ( var node = menu; node; node = node.parentNode ) node.nodeName == 'menupopup' && node.hidePopup(); menu.onmouseleave = null; }, 500); }; }; ["click", "dragstart", "mouseup", "mousedown"] .forEach(function(type) addEventListener(type, handleClick, true) ); // добавить страницу в закладки в указанной папке .... function addBookmark(folder, id) { var title = gBrowser.mCurrentTab.label; var folderId = PlacesUtils.getConcreteItemId(folder); var index = id ? PlacesUtils.bookmarks.getItemIndex(id) + 1 : 0; var readOnlyFolder = PlacesUtils.nodeIsQuery(folder) || PlacesUtils.annotations.itemHasAnnotation(folderId, PlacesUtils.LMANNO_FEEDURI); if ( !readOnlyFolder ) PlacesUtils.bookmarks.insertBookmark(folderId, gBrowser.currentURI, index, title); // всплывающая подсказка if ( id ) return; var al = Cc["@mozilla.org/alerts-service;1"].getService(Ci.nsIAlertsService); if ( readOnlyFolder ) { al.showAlertNotification("chrome://global/skin/icons/error-16.png", folder.title, "Не поддерживается"); return; } var icon = gBrowser.mCurrentTab.image || "chrome://global/skin/icons/information-16.png"; al.showAlertNotification(icon, "Добавил в папку " + (folder.title || "(без заголовка)") + ":", title.slice(0, 100)); }; })();
Отсутствует
const menuAutoClose = true; // автоматически закрыть меню закладок при уходе курсора
Это для боковой пнели не работает?
Нет.
Отсутствует
Пользуюсь кнопкой Открывать закладки левым кликом в новой вкладке не закрывая меню закладок, удалять закладки Ctrl+ средним кликом на закладке
Можно сделать так, чтобы по Ctrl+СКМ удалялись и папки тоже?
Отсутствует
Для такую кнопку можно сделать?
// Открывать закладки левым кликом в новой вкладке не закрывая меню закладок, от 03.09.2016. ................ 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(); // открыть в новой или в текущей вкладке если это указанная вкладка .... var itemUri = target._placesNode.uri; var current = ["about:newtab", "about:blank", "chrome://browser/content/bookmarks/bookmarksPanel.xul"]; ~current.indexOf(content.location.href) || e.ctrlKey ? gBrowser.loadURI(itemUri) : gBrowser.addTab(itemUri); setTimeout(()=> document.getElementById('placesContext').hidePopup(), 50); }; // автоматически закрыть все меню закладок при уходе курсора .... 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); }; } !this.hasAttribute("initialized") && addEventListener("mouseup", openBook, true);
Отсутствует
Можно ли сделать так, чтобы закладка, у которой чекбокс "Открывать в боковой панели" установлен, открывалась бы в боковой панели?
Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©
Отсутствует
bunda1 спасибо за ответ. НО ...
Вставил код в раздел /*Initialization Code*/ новой кнопки. Вытянул кнопку на панель. Жму ЛКМ не реагирует, СКМ не реагирует, ПКМ выпадает меню для редактирования, удаления и т.д. для кнопки.
Отсутствует
Вставил код в раздел /*Initialization Code*/ новой кнопки. Вытянул кнопку на панель. Жму ЛКМ не реагирует, СКМ не реагирует, ПКМ выпадает меню для редактирования, удаления и т.д. для кнопки.
Ну так и задумано, кнопка и не должна реагировать на ЛКМ и СКМ. Мой код дает возможность открывать левым кликом закладки в новой вкладке не закрывая меню закладок, если папка с закладками находится на панели закладок или в меню закладкок. Если нажать Ctrl левый клик откроет закладку в текущей вкладке и меню закроется. Меню автоматически закроется при уходе курсора с меню.
Отсутствует
bunda1, сделай, пожалуйста, актуальный вариант кода, чтоб вместо ЛКМ было СКМ.
// Открывать закладки левым кликом в новой вкладке не закрывая меню закладок, от 11.10.2016. ................ function openBook(e, target = e.originalTarget) { if ( target.localName !== "menuitem" || !(target._placesNode && PlacesUtils.nodeIsURI(target._placesNode) ) ) return; if ( e.button == 1 ) { // ЛКМ e.preventDefault(); e.stopPropagation(); // открыть в новой или в текущей вкладке если это указанная вкладка .... var itemUri = target._placesNode.uri; var current = ["about:newtab", "about:blank", "chrome://browser/content/bookmarks/bookmarksPanel.xul"]; ~current.indexOf(content.location.href) || e.ctrlKey ? gBrowser.loadURI(itemUri) : gBrowser.addTab(itemUri); setTimeout(()=> document.getElementById('placesContext').hidePopup(), 50); }; // автоматически закрыть все меню закладок при уходе курсора .... 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); }; } !this.hasAttribute("initialized") && addEventListener("click", openBook, true);
Отсутствует
bunda1, небольшая проблемка: например, я хочу удалить закладку, ПКМ по закладке вызывает контекстное меню закладки, при наведении мыши на "удалить", все меню закладок изчезает.
Отредактировано becool (26-03-2017 10:49:21)
Отсутствует
bunda1, небольшая проблемка: например, я хочу удалить закладку, ПКМ по закладке вызывает контекстное меню закладки, при наведении мыши на "удалить", все меню закладок изчезает.
// Открывать закладки средным кликом в новой вкладке не закрывая меню закладок, от 27.03.2017. ................ function openBook(e, target = e.originalTarget) { if ( target.localName !== "menuitem" || !(target._placesNode && PlacesUtils.nodeIsURI(target._placesNode) ) ) return; if ( e.button == 1 && e.type == 'click' ) { // ЛКМ e.preventDefault(); e.stopPropagation(); // открыть в новой или в текущей вкладке если это указанная вкладка .... var itemUri = target._placesNode.uri; var current = ["about:newtab", "about:blank", "chrome://browser/content/bookmarks/bookmarksPanel.xul"]; ~current.indexOf(content.location.href) || e.ctrlKey ? gBrowser.loadURI(itemUri) : gBrowser.addTab(itemUri); setTimeout(()=> document.getElementById('placesContext').hidePopup(), 50); }; // автоматически закрыть все меню закладок при уходе курсора .... 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); }; } !this.hasAttribute("initialized") && ["click", "mouseup"].forEach(type=> addEventListener(type, openBook, true) );
Отсутствует