Открывать последнюю папку библиотеки(Firefox 3.6 +)
Автор: Dumby
Описание: Kод после открытия окошка библиотеки открывает в библиотеке папку которая была открыта перед закрытием библиотеки.
Использование: создайте новую Custom Buttons кнопку и положите код в инициализацию. Можно положить код в уже существующую кнопку, но если в кнопке уже есть другие коды у которых есть this.onDestroy = function() {.. то надо поставить в начале кнопки вот этот код
const pn = "CB.lastUsedLibraryFolder"; var prefs = Application.prefs; if (!prefs.has(pn)) prefs.setValue(pn, ""); var pref = prefs.get(pn); const url = "chrome://browser/content/places/places.xul"; var observer = { observe: function(win) { win.addEventListener("load", this, false); }, handleEvent: function(e) { var doc = e.target; var win = doc.defaultView; if (e.type == "unload") { pref.value = win.PlacesOrganizer.location; return; } win.removeEventListener("load", this, false); if (doc.location.href != url) return; win.addEventListener("unload", this, false); setTimeout(function() { if (pref.value) win.PlacesOrganizer.location = pref.value; win.PlacesOrganizer._places.focus(); }, 100); } } Services.obs.addObserver(observer, "domwindowopened", false); this.onDestroy = function(reason) { try { Services.obs.removeObserver(observer, "domwindowopened"); } catch (ex) {} if (reason == "delete") pref.reset(); };
Отредактировано bunda1 (19-03-2013 21:21:21)
Отсутствует
Открывать библиотеку в вкладке и последнюю активную папку библиотеки(Firefox 24+)
Автор: Dumby, bunda1
Версия: от 23.06.2016.
Описание: Kод открывает библиотеку как активную вкладку рядом с текущей вкладкой и открывает в библиотеке:
1. папку закладок которая была открыта перед закрытием библиотеки, если в главном меню или в меню кнопки меню вы нажали Показать все закладки
2. Загрузки или Неподшитые закладки если в главном меню или в меню кнопки меню вы нажали эти пункты,
3. первую папку истории( Сегодня ) отсортированную по адресу если в главном меню или в меню кнопки меню вы нажали Показать весь журнал, в коде можно отключить сортировку по адресу и указать другую папку истории для открытия.
/* библиотека */ .tabbrowser-tab[label="Библиотека"] .tab-icon-image { list-style-image:url("chrome://browser/skin/places/allBookmarks.png")!important; -moz-image-region: auto !important; }
Для Показать все закладки используйте:
Для Загрузки или Показать все загрузки используйте:
Для Неподшитые закладки(отсутствует в Firefox47+) используйте:
Для Другие закладки используйте:
// Открывать библиотеку в вкладке и последнюю активную папку библиотеки, от 23.06.2016. ................... ((id, pn, library)=> { var folderNumber = 1; // папка истории которую откроет код var sortHistoryFolder = true; // сортировать папку истории которую откроет код // Перехватывать открытие библиотеки и открывать её в вкладке рядом с текущей .... function libraryInTab(e) { id = e.originalTarget.id || e.target.id; if ( id == 'downloads-button' && e.target.id == 'PanelUI-multiView' ) id = 'Tools:Downloads'; if ( e.target.id == 'downloadsPanel-multiView' && e.originalTarget.id == '' ) id = ''; if ( (id == '') || 'Browser:ShowAllHistory, appmenu_history, PanelUI-historyMore,\ Tools:Downloads, downloadsHistory, downloadsPanel-multiView,\ Browser:ShowAllBookmarks, appmenu_bookmarks, appmenu_unsortedBookmarks,\ menu_unsortedBookmarks, panelMenu_unsortedBookmarks, panelMenu_bookmarksToolbar' .indexOf(id) == -1 ) return; e.stopPropagation(); // закрыть меню большой кнопки меню и кнопки загрузок setTimeout(()=> { try { document.getElementById("appmenu-popup").hidePopup() } catch(e) {}; try { document.getElementById("downloadsPanel").hidePopup() } catch(e) {}; }, 10); // закрыть все вкладки библиотеки кроме первой вкладки var libTab = null; [...gBrowser.tabs].forEach(tab=> { if ( tab.linkedBrowser.currentURI.spec !== library ) return; !libTab ? libTab = tab : gBrowser.removeTab(tab); }); // переместить или открыть библиотеку рядом с текущей вкладкой var selTab = gBrowser.selectedTab; if ( libTab !== selTab ) { if ( libTab && gBrowser.visibleTabs.indexOf(libTab) == -1 ) TabView.moveTabTo(libTab, TabView._window.GroupItems._activeGroupItem.id); libTab = libTab || gBrowser.addTab(library); var pos = selTab._tPos + (libTab._tPos > selTab._tPos); gBrowser.moveTabTo(libTab, pos); gBrowser.selectedTab = libTab; // если уже открытая библиотека была перемещена if ( !libTab.hasAttribute('busy') ) openLastUsedFolder(); } else openLastUsedFolder(); // если библиотека уже была в текущей вкладке }; addEventListener('command', libraryInTab, true, window); var pane = document.getElementById('appmenuSecondaryPane'); // для меню большой кнопки меню pane && addEventListener('click', e=>{ e.target.nodeName == 'splitmenu' && libraryInTab(e) }, true, pane); // Открывать и запоминать последнюю активную папку если библиотека открыта как вкладка .... function openLastUsedFolder(e) { var view = e ? e.target.defaultView : content.document.defaultView; if ( view.location != library ) return; // получить адрес нужный папки try { var loc = cbu.getPrefs(pn) } catch(e) { loc = '' }; if ( /downloads|Downloads/.test(id) ) loc = 'place:transition=7&sort=4'; if ( /Toolbar/.test(id) ) loc = 'place:folder=TOOLBAR&excludeItems=1&expandQueries=0'; if ( /Unfiled|unsorted/.test(id) ) loc = 'place:folder=UNFILED_BOOKMARKS&excludeItems=1&expandQueries=0'; // открыть нужную папку if ( /AllHistory|history/.test(id) ) { // если Показать весь журнал var doc = view.document; var pWiew = doc.getElementById('placesList').view; pWiew && pWiew.selection.select(folderNumber); // открыть папку с указанным номером // сортировать папку истории по адресу if ( sortHistoryFolder && pWiew ) { doc.getElementById('viewMenu').open = true; doc.getElementById('viewSort').open = true; doc.getElementById('viewMenu').open = false; doc.getElementById('menucol_placesContentUrl').doCommand(); } } else { view.PlacesOrganizer.location = loc; // открыть папку с указанным адресом view.PlacesOrganizer._places.focus(); } // запоминать последнюю папку при закрытии библиотеки e && view.addEventListener("unload", function f(e) { view.removeEventListener(e.type, f); var loc = view.PlacesOrganizer.location; /place:folder|place:sort/.test(loc) && !/UNFILED|Toolbar/.test(loc) && cbu.setPrefs(pn, loc); }); }; addEventListener("pageshow", openLastUsedFolder); })('', 'CB.lastUsedLibraryFolder', 'chrome://browser/content/places/places.xul');
Отредактировано bunda1 (05-11-2014 22:47:41)
Отсутствует
А возможно ли жестом FireGestures открывать Загрузки в окне, когда установлена вторая кнопка?
Создай новый жест FireGestures с кодом:
Отсутствует
bunda1
Не совсем, хотелось бы Закладки открывать во вкладке, а Загрузки в окне, как и раньше.
Отсутствует
bunda1
А как на жест посадить загрузки во вкладке в 26 Этот не пашет
getBrowser().selectedTab = getBrowser().addTab("chrome://mozapps/content/downloads/downloads.xul");
Отредактировано villa7 (27-12-2013 11:59:02)
Лучше спросить у знающих - чем лезть не зная.
Отсутствует
villa7 Вот это работает.
var library = gBrowser.getBrowserForTab( gBrowser.selectedTab = gBrowser.addTab("chrome://browser/content/places/places.xul") ); library.addEventListener("pageshow", function c(e) { this.removeEventListener( e.type, c ); var win = e.target.defaultView; if ( win.location != "chrome://browser/content/places/places.xul") return; (function f() { try { win.PlacesOrganizer.location = 'place:transition=7&sort=4'; win.PlacesOrganizer._places.focus(); } catch(e) { setTimeout(function() { f() }, 0) }; })(); });
Отредактировано Teu (27-12-2013 12:26:41)
Отсутствует
Teu
gBrowser.getBrowserForTab( gBrowser.selectedTab = gBrowser.addTab("chrome://browser/content/places/places.xul") );
Это открывает библиотеку а мне нужно загрузки.
Лучше спросить у знающих - чем лезть не зная.
Отсутствует
villa7
Старое окно загрузок в Firefox 26 сломали (и чинить не собираются). Нужно или поставить что-нибудь вроде Downloads Window, или открывать about:downloads.
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Teu
Выделить кодКод:
gBrowser.getBrowserForTab( gBrowser.selectedTab = gBrowser.addTab("chrome://browser/content/places/places.xul") );Это открывает библиотеку а мне нужно загрузки.
Если открыть библиотеку в сайдбаре - window.openWebPanel("Loads","chrome://browser/content/places/places.xul"); то она сначала откроет библиотеку, но там можно указать загрузки и это запомнится до ближайшего рестарта...
Отредактировано difabor (27-12-2013 16:41:59)
Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©
Отсутствует
Если открыть библиотеку в сайдбаре - window.openWebPanel("Loads","chrome://browser/content/places/places.xul");
Только это не в сайдбаре, а во вкладке открывает.
Отсутствует
Teu
Выделить кодКод:
gBrowser.getBrowserForTab( gBrowser.selectedTab = gBrowser.addTab("chrome://browser/content/places/places.xul") );Это открывает библиотеку а мне нужно загрузки.
Попробуй используя css код убрать из этой вкладки всё лишнее. И будет как бы вкладка загрузок.
Отсутствует
bunda1
Решил проще для себя, мож кому пригодится.
'UR':{name:'Загрузки во вкладке',cmd:function(){getBrowser (). selectedTab = getBrowser (). addTab ("about:downloads")}}
Лучше спросить у знающих - чем лезть не зная.
Отсутствует
bunda1 Спасибо за кнопку! Суперски!
P.S. Можно параллельно с этим кодом использовать
// Открывать закладки средним кликом в новой вкладке не закрывая меню закладок, от 16.09.2013. ................................ (function() { const str = 'p"', rep = 'p" && !aEvent.button', obj = BookmarksEventHandler, func = obj.onClick; eval("BookmarksEventHandler.onClick = " + String.replace(func, str, rep)); addDestructor(function() obj.onClick = func); })(); ;
отсюда [CB]Открывать закладки левым кликом в новой вкладке не закрывая меню | Форум Mozilla Россия
и если да, то можно ли код от Dumby дополнить так, чтоб он обрабатывал Журнал аналогично Закладкам?
Отредактировано Александр Колесников (03-11-2014 19:52:20)
Отсутствует
Александр Колесников
(popup => { popup.checkForMiddleClick = (node, e) => { var trg = e.target; if (trg.getAttribute("disabled") == "true" || e.button != 1) return; popup.parentNode._placesView._onCommand(e); if (trg.mozMatchesSelector('#historyUndoPopup > [oncommand*="undoCloseTab"]')) { trg.classList.contains("restoreallitem") && trg.doCommand(); popup.parentNode._placesView.populateUndoSubmenu(); var menupopup = popup.querySelector('.recentlyClosedTabsMenu[disabled="true"] > menupopup'); menupopup && menupopup.hidePopup(); } else if (!trg.mozMatchesSelector("#goPopup > .bookmark-item")) closeMenus(trg); } addDestructor(() => delete popup.checkForMiddleClick); })(document.getElementById("goPopup"));
Отсутствует
Dumby Спасибо! Всё работает параллельно: и сабж темы, и "Открывать закладки средним кликом", и этот код !
Отсутствует
bunda1
Перестала на открывать во вкладке, если открывать через #downloadsHistory (помогает originalTarget, вместо(с) target).
И не открывает последнею папку закладок (всегда открывает неподшитые) и заданную папку истории (открывает "все закладки").
Отредактировано turbot (15-06-2016 08:05:04)
Отсутствует
bunda1
Перестала на открывать во вкладке, если открывать через #downloadsHistory (помогает originalTarget, вместо(с) target).
Где эта #downloadsHistory
Отсутствует
И не открывает последнею папку закладок (всегда открывает неподшитые) и заданную папку истории (открывает "все закладки").
Вроде исправил:
Открывать библиотеку в вкладке и последнюю активную папку библиотеки
Отсутствует