>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Сustom Buttons http://forum.mozilla-russia.org/viewforum.php?id=34 >[CB]Открывать последнюю папку библиотеки http://forum.mozilla-russia.org/viewtopic.php?id=58492 |
bunda1 > 19-03-2013 21:20:37 |
Открывать последнюю папку библиотеки(Firefox 3.6 +) Выделить код Код: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 > 29-03-2013 12:41:31 |
Открывать библиотеку в вкладке и последнюю активную папку библиотеки(Firefox 24+) Если хотите установить иконку для вкладки библиотеки: в userChrome.css: Выделить код Код:/* библиотека */ .tabbrowser-tab[label="Библиотека"] .tab-icon-image { list-style-image:url("chrome://browser/skin/places/allBookmarks.png")!important; -moz-image-region: auto !important; } Если хотите открывать библиотеку жестами мыши или CB кнопкой: Для Показать весь журнал используйте: Для Показать все закладки используйте: Для Загрузки или Показать все загрузки используйте: Для Неподшитые закладки(отсутствует в Firefox47+) используйте: Для Другие закладки используйте: Использование: создайте новую Custom Buttons кнопку и положите код в инициализацию. Не обязательно создавать новую CB кнопку, можно использовать уже существующую. Выделить код Код:// Открывать библиотеку в вкладке и последнюю активную папку библиотеки, от 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'); |
Teu > 25-12-2013 12:13:32 |
А возможно ли жестом FireGestures открывать Загрузки в окне, когда установлена вторая кнопка? |
bunda1 > 25-12-2013 22:44:29 |
Teu пишет
Создай новый жест FireGestures с кодом: |
Teu > 26-12-2013 05:57:58 |
bunda1 |
bunda1 > 26-12-2013 21:07:43 |
Teu пишет
|
Teu > 27-12-2013 11:10:46 |
bunda1 |
villa7 > 27-12-2013 11:57:47 |
bunda1 Выделить код Код:getBrowser().selectedTab = getBrowser().addTab("chrome://mozapps/content/downloads/downloads.xul"); |
Teu > 27-12-2013 12:25:15 |
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) }; })(); }); |
villa7 > 27-12-2013 12:46:20 |
Teu Выделить код Код:gBrowser.getBrowserForTab( gBrowser.selectedTab = gBrowser.addTab("chrome://browser/content/places/places.xul") ); Это открывает библиотеку а мне нужно загрузки. |
Infocatcher > 27-12-2013 13:53:41 |
villa7 |
difabor > 27-12-2013 16:41:00 |
villa7 пишет
Если открыть библиотеку в сайдбаре - window.openWebPanel("Loads","chrome://browser/content/places/places.xul"); то она сначала откроет библиотеку, но там можно указать загрузки и это запомнится до ближайшего рестарта... |
voqabuhe > 27-12-2013 17:10:21 |
difabor пишет
Только это не в сайдбаре, а во вкладке открывает. |
bunda1 > 27-12-2013 23:39:18 |
villa7 пишет
Попробуй используя css код убрать из этой вкладки всё лишнее. И будет как бы вкладка загрузок. |
villa7 > 28-12-2013 10:34:47 |
bunda1 Выделить код Код:'UR':{name:'Загрузки во вкладке',cmd:function(){getBrowser (). selectedTab = getBrowser (). addTab ("about:downloads")}} |
Александр Колесников > 03-11-2014 01:23:38 |
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 дополнить так, чтоб он обрабатывал Журнал аналогично Закладкам? |
bunda1 > 03-11-2014 23:22:15 |
Можно параллельно с этим кодом использовать но как там Журнал приделать я не зн |
Dumby > 08-11-2014 15:29:49 |
Александр Колесников скрытый текст Выделить код Код:(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")); |
Александр Колесников > 09-11-2014 08:59:06 |
Dumby Спасибо! Всё работает параллельно: и сабж темы, и "Открывать закладки средним кликом", и этот код ! |
turbot > 15-06-2016 07:54:10 |
bunda1 И не открывает последнею папку закладок (всегда открывает неподшитые) и заданную папку истории (открывает "все закладки"). |
bunda1 > 16-06-2016 20:11:55 |
turbot пишет
Где эта #downloadsHistory |
turbot > 17-06-2016 07:07:07 |
bunda1 > 20-06-2016 20:37:49 |
turbot пишет
Вроде исправил: |
turbot > 20-06-2016 22:03:07 |
bunda1 |
bunda1 > 20-06-2016 22:16:05 |
turbot пишет
А как ты открываешь загрузки? |
turbot > 20-06-2016 23:01:40 |
bunda1 |
bunda1 > 20-06-2016 23:05:48 |
turbot пишет
|
turbot > 20-06-2016 23:07:55 |
UPD: Не, не все. Клики по этой кнопке, тоже перехватывает. А там еще и слайдер хотят впихнуть, как в #identity-popup-multiView. |
turbot > 21-06-2016 00:01:20 |
bunda1 Выделить код Код:let target = e.originalTarget; while (target && !(target.localName == 'toolbarbutton' || target.localName == 'button' || target.localName == 'menuitem')) target = target.parentNode; id = target ? target.id : e.target.id; if ( (id == '') || 'Browser:ShowAllHistory, appmenu_history, PanelUI-historyMore,\ Tools:Downloads, downloadsHistory,\ Browser:ShowAllBookmarks, appmenu_bookmarks, appmenu_unsortedBookmarks, menu_unsortedBookmarks' .indexOf(id) == -1 ) return; |
bunda1 > 23-06-2016 19:47:31 |
turbot пишет
Работает, но тоже не всё открывает как надо, а вот так вроде всё: Открывать библиотеку в вкладке и последнюю активную папку библиотеки |
turbot > 24-06-2016 19:30:01 |
Угу, спасибо. Все как надо работает. |
turbot > 20-07-2016 21:32:41 |
bunda1 |