Существует с десяток дополнений, позволяющих как угодно делить окно на части и показывать в этих частях независимые странички.
Одни из этих дополнений делят на части окно вкладки, а другие - окно браузера (и тогда в каждой части находятся свои собственные вкладки).
А как они называются? Помимо Tile Tabs.
Добавлено 11-06-2016 14:24:58
turbot
Эх блин, это я вкурсе. Удобен вариант именно с панелью.
А функцию "Загружать закладку в боковой панели"
(В places.sqlite в свойствах закладки устанавливается флажок "loadInSidebar".)
Нельзя применить к ссылкам?
Отредактировано Stakhovsky (11-06-2016 15:00:36)
Отсутствует
Вот то, что сходу нашлось/вспомнилось: WebPanel Enhancer, Content Holder, его развитие Fox Splitter, Split Pannel, Tile View. (Отдельный вопрос, что из этого сейчас работает или может быть поправлено до рабочего состояния.)
Ещё что-то есть в закладках на другой машине, но нет времени её включать: ливень за окном кончился и надо убегать по делам, и так уже из-за него сильно опаздываю.
Отсутствует
в хроме сегодня увидел
vTabs 1.8.1.3
Вертикальная панель с вкладками
есть подобное в лисе? уж очень удобное,да и дизайн отличный = хочу
вот пару минут снял видео
https://yadi.sk/i/Zm7hWufcsRTGN
Никто не знает столько,сколько не знаю Я.
Отсутствует
Stakhovsky
Для GreaseMonkey получился такой скрипт:
var links, link; links = document.getElementsByTagName('A'); for (var i = --links.length; i >= 0; i--) if (links[i].href != '') { link = links[i].getAttribute('href'); if ((links[i].onclick == null) && (link.protocol != 'javascript:') && (link.protocol != 'data:')) links[i].setAttribute('href', 'javascript:document.location="' + link + '"'); };
Работает для страничек из Интернета.
Работало бы и для локальных дисков, но я не знаю, как (и можно ли) задать соответствующую маску имени для @include в GreaseMonkey.
Отредактировано yup (12-06-2016 11:55:13)
Отсутствует
А мне вот такое придумалось для CB, спросоня:
(sidebarWindow => { addEventListener('click', e=> { var webPanel = sidebarWindow.contentDocument.getElementById("web-panels-browser"); if (!webPanel) return; var sidebarDoc = webPanel.contentDocument; if (!(sidebarDoc && (sidebarDoc.location.protocol == "http:" || sidebarDoc.location.protocol == "https:" || sidebarDoc.location.protocol == "ftp:" || sidebarDoc.location.protocol == "ftps:" || sidebarDoc.location.protocol == "file:"))) return; let link = e.originalTarget; while (link && link.tagName.toLowerCase() != 'a' && link.src) link = link.parentNode; if (!(link && link.href && !(sidebarDoc.location.protocol == "file:" && link.className == 'file'))) return; link.target = "_self"; }, true, sidebarWindow) })(document.getElementById("sidebar"));
Вроде, проблем не заметил. И работает и на локальных ссылках и только в сайдбаре.
Расширенный вариант, готовая кнопка:
custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3ESidebar%20Sites%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAiEAAAIhAENVwL6AAAAIGNIUk0AAHolAACAgwAA+f8AAIDoAABSCAABFVgAADqXAAAXb9daH5AAAAHqSURBVHjarJM9aBVBFIW/s2wkgmDnDxoUgoJWokXERlEbf5pY2AhCCkWUgCaNvs3b2Z335lmZoETRINhKLPxD0CZgI0GtLFQUG8FGmxSBmBRzbSYSJE2IB4b5u/cMc+65MjOWYsT57cAVM9sL7AIi8EnSuxjjWKdV/Vgar0WCRrPqknQDuAB0AR+BsbS+DOwEfku6GWNsdFpV/EvQaFa5pElJ+8xsFlhrZn2dVvUrkW+R9Bb4CWyW9CrGONBpVTEHkDQK9JvZHNADzEv6WpQ16R6gG9gELJjZ2SzLvgNNXRtx2yR9AS5JOmJmfcAQy+Me8Bz4AFw3s95cUi8wHLy7X5T1LPA4ePdkueyirNcDM8G7p0VZr5G0Q41mdTB497oo6/3Bu+mirA+b2beUEwGyLMuTXj0p9kDw7k1R1kfVaFYvgUfA3VSBfqANXAUMyNPsgQ7wEJgAzgOnMuA2MJ4O7gCjwbtpYKOkBUDAuuDd+/TIOHBxMTYzsxfAieDdA+BY8G4qKT8QYxyWNCjpHICZPQOOB+8mgJPBu6lc0iFgNzAFbCjK+nTwbrJdl5//FVHSGWAmbfcUZT2/6jLKzCjK+hYwCMwlw8ynsRTdydYLQLekdrsum3n625CkrSuw8mSM0f2/ZlpNO/8ZAGBFAEu2Gqq+AAAAAElFTkSuQmCC%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bthis.onclick%20%3De%3D%3E%20%7B%0A%20%20if%20%28e.target%20%21%3D%20this%29%20return%3B%0A%20%20let%20clipboard%20%3D%20gClipboard.read%28%29%3B%0A%20%20if%20%28e.button%20%3D%3D%200%29%0A%20%20%20%20menuPopup.openPopup%28this%2C%20%27after_start%27%29%3B%0A%20%20if%20%28e.button%20%3D%3D%201%29%0A%20%20%20%20openWebPanel%28clipboard%2C%20clipboard%29%3B%0A%20%20if%20%28e.button%20%3D%3D%202%20%26%26%20%21e.shiftKey%20%26%26%20%21e.ctrlKey%20%26%26%20%21e.altKey%29%20%7B%0A%20%20%20%20e.preventDefault%28%29%3B%20e.stopPropagation%28%29%3B%0A%20%20%20%20openWebPanel%28window.content.document.title%2C%20window.content.document.location%29%0A%20%20%7D%0A%7D%0Athis.tooltipText%20%3D%20%27%u041B%u041A%u041C%3A%20%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u043C%u0435%u043D%u044E%20%u0441%u043E%20%u0441%u043F%u0438%u0441%u043A%u043E%u043C%20%u0437%u0430%u0434%u0430%u043D%u043D%u044B%u0445%20%u0430%u0434%u0440%u0435%u0441%u043E%u0432%5Cn%5C%u0421%u041A%u041C%3A%20%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u0430%u0434%u0440%u0435%u0441%20%u0438%u0437%20%u0431%u0443%u0444%u0435%u0440%u0430%5Cn%5C%u041F%u041A%u041C%3A%20%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u0430%u0434%u0440%u0435%u0441%20%u0430%u043A%u0442%u0438%u0432%u043D%u043E%u0439%20%u0432%u043A%u043B%u0430%u0434%u043A%u0438%27%3B%0A%0Avar%20menuPopup%20%3D%20createNode%28%22menupopup%22%2C%20self%2C%20false%2C%20%7Bcontext%3A%20%22%22%7D%29%2C%0A%20%20%20%20sbBox%20%3D%20SidebarUI._box%2C%0A%20%20%20%20sbClsBtn%20%3D%20sbBox.querySelector%28%22.close-icon.tabbable%22%29%2C%0A%20%20%20%20wps%20%3D%20%22SidebarUI.browser.contentDocument.querySelector%28%27browser%23web-panels-browser%27%29.%22%2C%0A%20%20%20%20sep%20%3D%20%22%5Cn%5Cn%22%2C%0A%20%20%20%20help%20%3D%20self.Help.trim%28%29%2C%0A%20%20%20%20items%20%3D%20help%0A%20%20%20%20%20%20%3F%20help.split%28sep%29%0A%20%20%20%20%20%20%3A%20%5B%22New%20Tab%5Cnabout%3Anewtab%5Cnchrome%3A//mozapps/skin/places/defaultFavicon.png%22%5D%2C%0A%20%20%20%20menugroup%20%3D%20createNode%28%22menugroup%22%2C%20menuPopup%2C%20false%2C%20%7B%0A%20%20%20%20%20%20orient%3A%20%22vertical%22%2C%0A%20%20%20%20%20%20oncommand%3A%20%22openPage%28event.target%29%3B%22%2C%0A%20%20%20%20%20%20oncontextmenu%3A%20%22removePage%28event.target%29%3B%22%0A%20%20%20%20%7D%29%2C%0A%20%20%20%20cnMenu%20%3D%20document.getElementById%28%22contentAreaContextMenu%22%29%2C%0A%20%20%20%20cnOpen%20%3D%20document.getElementById%28%22context-sep-open%22%29%2C%0A%20%20%20%20cnItem%20%3D%20createNode%28%22menuitem%22%2C%20cnOpen%2C%20true%2C%20%7B%0A%20%20%20%20%20%20id%3A%20%22open-in-sidebar%22%2C%0A%20%20%20%20%20%20label%3A%20%22Open%20in%20Sidebar%22%2C%0A%20%20%20%20%20%20oncommand%3A%20%22openWebPanel%28gContextMenu.getLinkURL%28%29%2C%20gContextMenu.getLinkURL%28%29%29%3B%20document.getElementById%28%27verticaltoolbar-button%27%29.click%28%29%3B%22%0A%20%20%20%20%7D%29%2C%0A%20%20%20%20cnListener%20%3D%20cnMenu.addEventListener%28%22popupshowing%22%2C%20%28%29%3D%3E%20cnItem.hidden%20%3D%20%21gContextMenu.onLink%29%2C%0A%20%20%20%20cnDestructor%20%3D%20addDestructor%28%28%29%3D%3E%20%7B%0A%20%20%20%20%20%20cnMenu.removeEventListener%28%22popupshowing%22%2C%20cnListener%29%3B%0A%20%20%20%20%20%20cnMenu.removeChild%28cnItem%29%0A%20%20%20%20%7D%29%2C%0A%20%20%20%20sbNav%20%3D%20%5B%0A%20%20%20%20%20%20%5B%22back%22%2C%20%22goBack%28%29%3B%22%2C%20%22back-button-tooltip%22%5D%2C%0A%20%20%20%20%20%20%5B%22forward%22%2C%20%22goForward%28%29%3B%22%2C%20%22forward-button-tooltip%22%5D%2C%0A%20%20%20%20%20%20%5B%22reload%22%2C%20%22reload%28%29%3B%22%2C%2C%20%22Reload%20current%20page%22%5D%2C%0A%20%20%20%20%20%20%5B%22stop%22%2C%20%22stop%28%29%3B%22%2C%2C%20%22Stop%20loading%20this%20page%22%5D%0A%20%20%20%20%5D%3B%0A%0Aitems.forEach%28%28item%2C%20index%29%20%3D%3E%20%7B%0A%20%20var%20%5Btitle%2C%20url%2C%20icon%5D%20%3D%20item.split%28%22%5Cn%22%29%3B%0A%20%20icon%20%3D%20%28icon.startsWith%28%27chrome%3A%27%29%20%7C%7C%20icon.startsWith%28%27data%3A%27%29%29%20%3F%20icon%20%3A%20%27moz-anno%3Afavicon%3A%27%20+%20icon%3B%0A%20%20createNode%28%22menuitem%22%2C%20menugroup%2C%20false%2C%20%7B%0A%20%20%20%20tooltiptext%3A%20url%2C%0A%20%20%20%20class%3A%20%22menuitem-iconic%22%2C%0A%20%20%20%20label%3A%20title%2C%0A%20%20%20%20image%3A%20icon%0A%20%20%7D%29.index%20%3D%20index%3B%0A%7D%29%3B%0Amenugroup.openPage%20%3D%20%28%7Bindex%7D%29%20%3D%3E%20openWebPanel%28...items%5Bindex%5D.split%28%22%5Cn%22%29%29%3B%0Amenugroup.removePage%20%3D%20%28%7Bindex%7D%29%20%3D%3E%20items.splice%28index%2C%201%29%20%26%26%20installButton%28items.join%28sep%29%29%3B%0A%0A%5B%0A%20%20%5B%27menuseparator%27%5D%2C%0A%20%20%5B%27menuitem%27%2C%20%27%u0420%u0435%u0434%u0430%u043A%u0442%u0438%u0440%u043E%u0432%u0430%u0442%u044C%20%u043A%u043D%u043E%u043F%u043A%u0443%27%2C%20%27custombuttons.editButton%28this.parentNode.parentNode%29%3B%27%5D%2C%0A%20%20%5B%27menuitem%27%2C%20%27%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u0430%u0434%u0440%u0435%u0441%20%u0438%u0437%20%u0431%u0443%u0444%u0435%u0440%u0430%20%u043E%u0431%u043C%u0435%u043D%u0430%27%2C%20%27openWebPanel%28gClipboard.read%28%29%2C%20gClipboard.read%28%29%29%3B%27%5D%2C%0A%20%20%5B%27menuitem%27%2C%20%27%u0414%u043E%u0431%u0430%u0432%u0438%u0442%u044C%20%u0442%u0435%u043A%u0443%u0449%u0438%u0439%20%u0441%u0430%u0439%u0442%27%2C%20%27this.parentNode.parentNode.addPage%28window.content.document.title%2C%20window.content.document.location.href%2C%20gBrowser.mCurrentTab.image%29%3B%27%5D%0A%5D.forEach%28%28%5Btype%2C%20lbl%2C%20cmd%5D%29%20%3D%3E%20%0A%20%20%20%20%20%20%20%20%20%20createNode%28type%2C%20menuPopup%2C%20false%2C%20%7Blabel%3A%20lbl%2C%20oncommand%3A%20cmd%7D%29%29%3B%0A%0Aif%20%28%21sbBox.hasAttribute%28%22navbuttons%22%29%29%20%7B%0A%20%20sbNav.forEach%28%28%5Bid%2C%20cmd%2C%20tltp%2C%20ttxt%5D%29%20%3D%3E%20%7B%0A%20%20%20%20var%20icon%20%3D%20%22chrome%3A//browser/skin/content-contextmenu.svg%23%22%20+%20id%3B%0A%20%20%20%20id%20%3D%20%27sb-%27%20+%20id%20+%20%27-button%27%3B%0A%20%20%20%20createNode%28%22toolbarbutton%22%2C%20sbClsBtn%2C%20true%2C%20%7B%0A%20%20%20%20%20%20id%3A%20id%2C%0A%20%20%20%20%20%20oncommand%3A%20wps%20+%20cmd%2C%0A%20%20%20%20%20%20tooltip%3A%20tltp%2C%0A%20%20%20%20%20%20tooltiptext%3A%20ttxt%2C%0A%20%20%20%20%20%20style%3A%20%27list-style-image%3A%20url%28%22%27%20+%20icon%20+%20%27%22%29%3B%20-moz-image-region%3A%20rect%280%2011px%2011px%200%29%3B%27%0A%20%20%20%20%7D%29%0A%20%20%7D%29%0A%20%20sbBox.setAttribute%28%27navbuttons%27%2C%20%27true%27%29%3B%0A%7D%0A%0Afunction%20installButton%28help%29%20%7B%0A%20%20%20%20var%20link%20%3D%20custombuttons.makeButtonLink%28%22edit%22%2C%20_id%29%3B%0A%20%20%20%20var%20param%20%3D%20custombuttons.cbService.getButtonParameters%28link%29%3B%0A%20%20%20%20param%20%3D%20param.wrappedJSObject%20%7C%7C%20param%3B%0A%20%20%20%20param.help%20%3D%20help%3B%0A%20%20%20%20custombuttons.cbService.installButton%28param%29%3B%0A%7D%0A%0Afunction%20createNode%28type%2C%20elm%2C%20before%2C%20attrs%29%20%7B%0A%20%20var%20node%20%3D%20before%0A%20%20%3F%20elm.parentNode.insertBefore%28document.createElement%28type%29%2C%20elm%29%0A%20%20%3A%20elm.appendChild%28document.createElement%28type%29%29%3B%0A%20%20for%28var%20name%20in%20attrs%29%20%7B%0A%20%20%20%20if%20%28attrs%5Bname%5D%29%0A%20%20%20%20%20%20node.setAttribute%28name%2C%20attrs%5Bname%5D%29%3B%0A%20%20%7D%0A%20%20return%20node%3B%0A%7D%0A%0Athis.addPage%20%3D%28title%2C%20url%2C%20icon%29%3D%3E%20%7B%0A%20%20title%20%3D%20%21title%20%3F%20url%20%3A%20title%3B%0A%20%20icon%20%3D%20%21icon%20%3F%20%27chrome%3A//mozapps/skin/places/defaultFavicon.png%27%20%3A%20icon%3B%0A%20%20var%20newItem%20%3D%20%5Btitle%2C%20url%2C%20icon%5D.join%28%27%5Cn%27%29%3B%0A%20%20installButton%28%5Bhelp%2C%20newItem%5D.join%28sep%29%29%3B%0A%7D%0A%0A%28%28browser%2C%20listener%2C%20br%29%20%3D%3E%20%7B%20if%20%28browser%29%20%7B%0A%20%20addEventListener%28%22DOMFrameContentLoaded%22%2C%20listener%2C%20true%2C%20browser%29%3B%0A%20%20var%20getBr%20%3D%20%28%29%20%3D%3E%20browser.contentDocument.querySelector%28listener.selector%29%3B%0A%20%20if%20%28%28br%20%3D%20getBr%28%29%29%29%20br.window%20%3D%20%7Bparent%3A%20listener.parent%7D%3B%0A%20%20addDestructor%28%28%29%20%3D%3E%20%7B%0A%20%20%20%20if%20%28%28br%20%3D%20getBr%28%29%29%29%20delete%20br.window%3B%0A%20%20%7D%29%3B%0A%7D%7D%29%28SidebarUI.browser%2C%20%7B%0A%20%20selector%3A%20%22browser%23web-panels-browser%22%2C%0A%20%20handleEvent%28e%29%20%7B%0A%20%20%20%20if%20%28e.target.matches%28this.selector%29%20%26%26%20%21e.target.hasAttribute%28%22disableglobalhistory%22%29%29%20%7B%0A%20%20%20%20%20%20sbNav.forEach%28%28%5Bid%2C%20cmd%5D%29%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20id%20%3D%20%27%23context-%27%20+%20id%3B%0A%20%20%20%20%20%20%20%20var%20mItem%20%3D%20SidebarUI.browser.contentDocument.querySelector%28id%29%3B%0A%20%20%20%20%20%20%20%20if%20%28id%20%3D%3D%20%22%23context-reload%22%29%0A%20%20%20%20%20%20%20%20%20%20mItem.style.setProperty%28%27display%27%2C%20%27-moz-box%27%2C%20%27important%27%29%3B%0A%20%20%20%20%20%20%20%20mItem.onclick%20%3D%28%29%3D%3E%20eval%28wps%20+%20cmd%29%3B%0A%20%20%20%20%20%20%7D%29%0A%20%20%20%20%20%20e.target.setAttribute%28%22disableglobalhistory%22%2C%20%27false%27%29%0A%20%20%20%20%7D%0A%0A%20%20%20%20if%20%28e.target.matches%28this.selector%29%20%26%26%20%21%28%22window%22%20in%20e.target%29%29%0A%20%20%20%20%20%20e.target.window%20%3D%20%7Bparent%3A%20this.parent%7D%3B%0A%20%20%7D%2C%0A%20%20get%20parent%28%29%20%7B%0A%20%20%20%20delete%20this.parent%3B%0A%20%20%20%20var%20parent%20%3D%20%7B%7D%3B%0A%20%20%20%20parent.contentAreaClick%20%3D%20eval%28%60%28%24%7B%0A%20%20%20%20%20%20contentAreaClick.toString%28%29.replace%28%0A%20%20%20%20%20%20%20%20%27linkNode.getAttribute%28%22onclick%22%29%27%2C%0A%20%20%20%20%20%20%20%20%22%21target%20%26%26%20this.shouldLoadInPanelBrowser%28linkNode%29%20%7C%7C%20%24%26%22%0A%20%20%20%20%20%20%29%0A%20%20%20%20%7D%29%60%29%3B%0A%20%20%20%20parent.shouldLoadInPanelBrowser%20%3D%20link%20%3D%3E%20%7B%0A%20%20%20%20%20%20if%20%28%21%28link.ownerDocument.location.protocol%20%3D%3D%20%22file%3A%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%26%26%20link.className%20%3D%3D%20%27file%27%29%29%20return%20true%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20this.parent%20%3D%20parent%3B%0A%20%20%7D%0A%7D%29%3B%0A%0Avar%20sss%20%3D%20Cc%5B%22@mozilla.org/content/style-sheet-service%3B1%22%5D.getService%28Ci.nsIStyleSheetService%29%3B%0Avar%20uri%20%3D%20makeURI%28%22data%3Atext/css%2C%22%20+%20encodeURIComponent%28%0A%20%20%5B%0A%20%20%20%20%27@namespace%20xul%20url%28%22http%3A//www.mozilla.org/keymaster/gatekeeper/there.is.only.xul%22%29%3B%27%2C%0A%20%20%20%20%27@namespace%20html%20url%28%22http%3A//www.w3.org/1999/xhtml%22%29%3B%27%2C%0A%20%20%20%20%27@namespace%20svg%20url%28http%3A//www.w3.org/2000/svg%29%3B%27%2C%0A%20%20%20%20%27%27%2C%0A%20%20%20%20%27@-moz-document%20url%28%22chrome%3A//browser/content/browser.xul%22%29%20%7B%27%2C%0A%20%20%20%20%27%20%20%23sidebar-throbber%5Bloading%5D%20%7E%20%23sb-reload-button%20%7B%27%2C%0A%20%20%20%20%27%20%20%20%20display%3A%20none%21important%3B%27%2C%0A%20%20%20%20%27%20%20%7D%27%2C%0A%20%20%20%20%27%20%20%23sidebar-throbber%3Anot%28%5Bloading%5D%29%20%7E%20%23sb-stop-button%20%7B%27%2C%0A%20%20%20%20%27%20%20%20%20display%3A%20none%21important%3B%27%2C%0A%20%20%20%20%27%20%20%7D%27%2C%0A%20%20%20%20%27%20%20%23sidebar-box%20toolbarbutton%5Bid%5E%3D%22sb-%22%5D%20%7B%27%2C%0A%20%20%20%20%27%20%20%20%20-moz-appearance%3A%20none%21important%3B%27%2C%0A%20%20%20%20%27%20%20%20%20padding%3A%203.5px%206px%21important%3B%27%2C%0A%20%20%20%20%27%20%20%20%20margin%3A%20.5px%200%21important%3B%27%2C%0A%20%20%20%20%27%20%20%20%20background%3A%20none%21important%3B%27%2C%0A%20%20%20%20%27%20%20%20%20background-clip%3A%20border-box%21important%3B%27%2C%0A%20%20%20%20%27%20%20%20%20border%3A%20none%21important%3B%27%2C%0A%20%20%20%20%27%20%20%20%20border-radius%3A%200%21important%3B%27%2C%0A%20%20%20%20%27%20%20%20%20box-shadow%3A%20none%21important%3B%27%2C%0A%20%20%20%20%27%20%20%7D%27%2C%0A%20%20%20%20%27%20%20%23sidebar-box%3Anot%28%5Bsidebarcommand%3D%22viewWebPanelsSidebar%22%5D%29%20toolbarbutton%5Bid%5E%3D%22sb-%22%5D%20%7B%27%2C%0A%20%20%20%20%27%20%20%20%20display%3A%20none%21important%3B%27%2C%0A%20%20%20%20%27%20%20%7D%27%2C%0A%20%20%20%20%27%20%20%23sidebar-box%20toolbarbutton%5Bid%5E%3D%22sb-%22%5D%20.toolbarbutton-icon%20%7B%27%2C%0A%20%20%20%20%27%20%20%20%20opacity%3A%200.5%20%21important%3B%27%2C%0A%20%20%20%20%27%20%20%20%20transition%3A%20opacity%20ease%20200ms%20%21important%3B%27%2C%0A%20%20%20%20%27%20%20%7D%27%2C%0A%20%20%20%20%27%20%20%23sidebar-box%20toolbarbutton%5Bid%5E%3D%22sb-%22%5D%3Ahover%20.toolbarbutton-icon%20%7B%27%2C%0A%20%20%20%20%27%20%20%20%20opacity%3A%200.9%20%21important%3B%27%2C%0A%20%20%20%20%27%20%20%7D%27%2C%0A%20%20%20%20%27%7D%27%0A%20%20%5D.join%28%27%5Cn%27%29%29%29%3B%0AaddDestructor%28%28%29%3D%3E%20sss.unregisterSheet%28this.uri%2C%200%20%7C%7C%20uri%2C%200%29%29%3B%0Athis.uri%20%3D%20uri%3B%0Asss.loadAndRegisterSheet%28uri%2C%200%29%3B%0A%0A%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E
ЛКМ: Открыть меню со списком заданных адресов (ЛКМ по которым откроет их в боковой панели, ПКМ - удалит из списка) и пунктом добавляющим в этот список сайт с активной вкладки.
(Название сайта, адрес и иконка сохраняются во вкладке справки и записываются с новой строки. Разделяются - пустой строкой)
СКМ: Открыть адрес из буфера
ПКМ (без модификаторов): Открыть в боковой панели адрес активной вкладки
+ Пункт контекстного меню ссылок, открывающий их в боковой панели.
UPD: Кое-как восстановил работоспособность пунктов контекстной навигации в боковой панели.
UPD2: Добавил установку иконок к пунктам меню и исправил работу при наличии спецсимволов во вкладке справки.
UPD3: Привел, в основном, в божеский вид, сообразно предложенному Dumby.
UPD4: Привел, окончательно, в божеский вид, опять-таки сообразно предложениям Dumby. Усё.
UPD5: Пользователям 48+ следует обратить внимание на имеющийся баг в Custom Buttons, который делает нерабочими все кнопки берущие код с вкладки "Справка". Подробнее, как можно исправить, тут.
UPD6: Исправления в стиле, предотвращающие конфликт с другими кастомными кнопками в заголовке сайдбара.
Отредактировано turbot (01-09-2016 19:44:06)
Отсутствует
У просмотра сайтов в боковой панели есть существенное неудобство - не работает история: если перешёл куда-то, щёлкнув по ссылке, то вернуться кнопкой "Назад" уже невозможно и придётся заново заходить на сайт через закладку. Поэтому я, выбирая, какой метод использовать (править "href" или "target"), рассуждал так: если ссылка на страничке её автором оформлена так, что открывается не в текущей вкладке, а в новой, то лучше пусть она и откроется именно во вкладке, а не в панели, а потому "target" не трогаем, а корёжим "href". Однако, написав код и убедившись, что он работает, я не удосужился проверить его на ссылках, у которых действительно изначально задан "target". А оказалось, что в таком случае ссылка не открывается, жалуется на неправильный URL. Потому заботиться о сохранении "target" смысла не имеет и вот исправленный вариант:
var links = document.getElementsByTagName('A'); for (var i = --links.length; i >= 0; i--) links[i].target = "_self";
Кстати, убивать "target" может оказаться полезным всегда, а не только в панели, потому что обычную ссылку открыть не в текущем окне очень легко, а вот наоборот (ссылку, созданную автором так, чтобы открываться в новом окне, - открыть в текущем) - куда как сложнее.
Отредактировано yup (12-06-2016 13:59:36)
Отсутствует
yup
Так кнопка назад привязана же к вкладке. Для боковой панели думаю это уже лишнее. Разве что это нужно будет добавлять в контекстное меню пункт "назад". Потом захочется добавить пунк "обновить", потом возможность изменять масштаб текста и т.д
Отредактировано Stakhovsky (12-06-2016 17:21:19)
Отсутствует
Так кнопка назад привязана же к вкладке. Разве что это нужно будет добавлять в контекстное меню пункт "назад".
Вот именно в контекстном меню тамошние кнопки "вперёд-назад" и находятся. Но не работают. И забой не работает.
Отредактировано yup (12-06-2016 17:38:49)
Отсутствует
yup
К вашему скрипту MutationObserver напрашивается.
А то не будет на динамическом контенте работать. Я с этим зверем совсем не дружу, потому и с листенером сделал.
И этот скрипт ведь будет работать не только на страницах, открытых в сайдбаре (что требуется), но и во вкладках? Или я чего-то не понял?
Отсутствует
К вашему скрипту MutationObserver напрашивается.
Можно, конечно. Но не люблю грузить процессор лишней работой. Лишней - потому что:
А то не будет на динамическом контенте работать.
Думаю, что шансы встретить страничку со скриптами, химичащими с таким экзотическим параметром как "target", исчезающе малы. Но если понадобится - добавить будет нетяжело (тем более, что рабочие заготовки с MutationObserver с некоторых пор в запасе имеются).
И этот скрипт ведь будет работать не только на страницах, открытых в сайдбаре (что требуется), но и во вкладках? Или я чего-то не понял?
Работать будет где душе угодно. GreaseMonkey, в отличие от Custom Buttons, позволяет (вернее даже - заставляет) указывать (полными URL или масками), на каких страничках или сайтах должен исполняться данный скрипт.
Если его действие нужно только для конкретных закладок (у которых проставлена галочка "Открывать в боковой панели"), то URL-ы этих закладок нужно внести в настройки скрипта. Если же захочется чистить "target" и на других посещаемых сайтах, то и маски можно поставить более всеохватывающие (вплоть до "*"). Убивать "target" (или менять на "_self") - это ведь полезно не только для боковой панели, но и для обычных вкладок.
Отредактировано yup (12-06-2016 23:09:07)
Отсутствует
Думаю, что шансы встретить страничку со скриптами, химичащими с таким экзотическим параметром как "target", исчезающе малы
Не-не, я про addedNodes, т.е. для, например, отслеживать подгружаемые твиты и т.п. и для них также менять target.
Отсутствует
Не-не, я про addedNodes, т.е. для, например, отслеживать подгружаемые твиты и т.п. и для них также менять target.
Да, такой вариант я из виду упустил (по роду своей деятельности/интересов редко с подобными сайтами сталкиваюсь).
Сегодня я заканчиваю важную работу, которая к завтрашнему обеду обязана быть сделана, а после этого исправлю свою оплошность.
Отсутствует
Пытался сейчас найти аддон, которым пользовался году в 2014, но почему-то не нашёл.
Дополнение называлось Google Favicons (http://i.imgur.com/6pQloEM.jpg), и выполнял простую функцию: отображал иконки сайтов (favicon) перед результатами в Google-поиске
Отсутствует
rRondo
Есть скрипт Faviconize Google ...если что.
Отсутствует
Отсутствует
Не-не, я про addedNodes, т.е. для, например, отслеживать подгружаемые твиты и т.п. и для них также менять target.
Вчера времени было очень мало, поэтому поверил на слово авторам со StackOverflow, что "<base target="_self">" для боковой панели не помогает. А сегодня проверил, и оказалось, что очень даже действует.
Поэтому минимальный вариант вмешательства в страничку сводится к внесению одной строки в её заголовок:
var elems = document.getElementsByTagName('base'); for (var i = elems.length-1; i >= 0; i--) elems[i].parentNode.removeChild(elems[i]); document.head.appendChild(document.createElement("base").setAttribute('target', '_self'));
Такое изменение будет действовать не только на ссылки, имевшиеся на страничке изначально, а и на те, которые могут на ней появиться позднее.
Но ссылки, имеющие собственный атрибут "target", отличный от "_self", будут открываться не в панели, а в новых окнах(вкладках). Если хочется, чтобы и они тоже открывались в панели, то код немножко увеличивается:
var elems = document.getElementsByTagName('base'); for (var i = elems.length-1; i >= 0; i--) elems[i].parentNode.removeChild(elems[i]); document.head.appendChild(document.createElement('base').setAttribute('target', '_self')); elems = document.getElementsByTagName('A'); for (i = elems.length-1; i >= 0; i--) elems[i].setAttribute('target', ''); var observer = new MutationObserver(function(mutations) { observer.disconnect(); mutations.forEach(function(mutation) { switch (mutation.type) { case 'childList': var elem = mutation.addedNodes; for (var i = elem.length - 1; i >= 0; i--) if (elem[i].nodeName == 'A') elem[i].setAttribute('target', ''); break; case 'attributes': mutation.target.setAttribute('target', ''); break; }; }); observer.observe(document, observer.config); }); observer.config = {attributes: true, attributeFilter: ['target'], childList: true, subtree: true}; observer.observe(document, observer.config);
С точки зрения минимизации убивания производительности лучше было бы использовать не MutationObserver, а обработчик события "click", но его проблема в том, что если таких обработчиков у ссылки несколько, то порядок их срабатывания непредсказуем, и поэтому "родной" обработчик может сработать до добавленного нами.
Отредактировано yup (14-06-2016 02:49:54)
Отсутствует
Всем доброго времени суток.
Ищу расширение или скрипт для GreaseMonkey, который бы убирал из ссылок Youtube всякий мусор (ненужные параметры, появляющиеся при переходах по ссылкам/аннотациям и пр. в пределах сайта).
Ранее пользовался вот этим скриптом
https://greasyfork.org/ru/scripts/1193-youtube-link-cleaner
Но в последнее время стал некоторые параметры пропускать.
Отсутствует
yup
С точки зрения минимизации убивания производительности лучше было бы использовать не MutationObserver, а обработчик события "click", но его проблема в том, что если таких обработчиков у ссылки несколько, то порядок их срабатывания непредсказуем, и поэтому "родной" обработчик может сработать до добавленного нами.
Там Dumby предложил как раз вариант лишенный этих недостатков.
Как-то мне кнопка ближе все-таки (особенно, раз осилил переделать под предложенное). Хоть и страшная, но родная.
Но все-равно спасибо. И извините, что время заставил потратить (но может другим пригодится).
Отсутствует
Напомните название костыля, где можно было расшаривать ненужные логины/пароли от различных сайтов, и пользоваться шарами других юзеров.
Отсутствует
Добрый день. Раньше стояло расширение FaviconReloader, которое загружало иконки сайтов. Есть ли аналог ему? И еще с помощью чего сделать, чтобы при добавлении страницы в закладки не надо было нажимать готово. А сразу бы без подтверждения добавляло в не подшитые закладки.
Отсутствует
Отсутствует