Mein erstes Script funktioniert tadellos, nur der Rechtsklick funktioniert bei dem nicht.
Beiträge von Fritz80
-
-
Funktioniert auch nicht.
-
Keine Ahnung, warum das bei mir nicht funktioniert
-
Es wird keine Leiste angezeigt. Skriptcache gelöscht. Nur das eine Script im Ordner
-
Hallo
Ich habe das letzte Script ausprobiert funktioniert nicht es erscheint nicht mal eine Statusleiste.
Mit freundlichem Gruß
Fritz
-
Hallo,
Ich habe in der Statusleiste mehrere Add-ons und um an die Einstellungen zu kommen brauche ich den Rechtsklick, der aber nicht funktioniert.
Denn Code, den ich benutze, sieht so aus
CSS
Alles anzeigen/* Statusleiste für Firefox */ // https://www.camp-firefox.de/forum/viewtopic.php?p=1052187&sid=d4e33b574226439c26dfb45629b71369#p1052187 // entwickelt von aborix (function() { if (location.href !== 'chrome://browser/content/browser.xhtml') return; var css =` #new-toolbar { height: 28px; direction: rtl; -moz-window-dragging: drag; /* border-top: 1px solid black !important; background-color: rgba(0,0,0,0) !important; color: black !important; */ } #statuspanel { bottom: -3px !important; left: -30px !important; height: 20px !important; max-width: 20% !important; transition: none !important; } #statuspanel-label{ margin-top: -1px !important; margin-bottom: 5px !important; background:#F0EDF8!important; border: none !important; font: 15px Arial Rounded MT Bold !important; font-weight: normal !important; color: black-gray !important; } `; var sss = Cc['@mozilla.org/content/style-sheet-service;1'].getService(Ci.nsIStyleSheetService); var uri = makeURI('data:text/css;charset=UTF=8,' + encodeURIComponent(css)); sss.loadAndRegisterSheet(uri, sss.AUTHOR_SHEET); var tb = document.createXULElement('toolbar'); tb.id = 'new-toolbar'; tb.setAttribute('customizable', true); tb.setAttribute('mode', 'icons'); var vbox = document.createXULElement('vbox'); document.getElementById('navigator-toolbox').parentNode.parentNode.insertBefore( vbox, document.getElementById('browser-bottombox')); vbox.style.backgroundColor = '#454545'; vbox.appendChild(tb); CustomizableUI.registerArea('new-toolbar', {legacy: true}); CustomizableUI.registerToolbarNode(tb); })(); setTimeout(function() { if (window.__SSi == 'window0') return; let tabbar = document.getElementById('TabsToolbar'); let tab = gBrowser.selectedTab; tabbar.style.display = '-moz-box'; duplicateTabIn(tab, 'tab'); gBrowser.moveTabTo(gBrowser.selectedTab, tab._tPos); gBrowser.removeTab(tab); tabbar.style.display = ''; }, 1500);Kann man den Rechtsklick da noch einfügen oder funktioniert das so nicht?
Besten Dank schon mal für die Hilfe
-
-
-
-
Spitze Funktioniert
Danke
-
Nein noch immer keine Beschriftung
-
Hallo,
Nach dem neusten Update, ist bei der Mehrzeiligen Tab leiste, im aktiven Tab keine Beschriftung mehr zu erkennen, nur bei inaktiven Tabs.
Kann mir da jemand Helfen.
Danke im Voraus.
CSS
Alles anzeigen// ==UserScript== // @name zzzz-MultiRowTab_LiteforFx48.uc.js // @namespace http://space.geocities.yahoo.co.jp/gl/alice0775 // @description Experimentelle CSS Version für Mehrzeilige Tableiste // @include main // @compatibility Firefox 71 // @author Alice0775 // @version 2016/08/05 00:00 Firefox 48 // @version 2016/05/01 00:01 hide favicon if busy // @version 2016/03/09 00:01 Bug 1222490 - Actually remove panorama for Fx45+ // @version 2016/02/09 00:01 workaround css for lwt // @version 2016/02/09 00:00 // ==/UserScript== "use strict"; MultiRowTabLiteforFx(); function MultiRowTabLiteforFx() { var css =` @-moz-document url-prefix("chrome://browser/content/browser.xhtml") { /* Anpassung der Symbolleisten */ [tabsintitlebar="true"][sizemode="maximized"] #navigator-toolbox { padding-top: 8px !important; } #titlebar,#tabbrowser-tabs { -moz-appearance: none !important; } /* Verhindern, dass die Titelleistenschaltflächen auf der Tableiste im Hochformat angezeigt werden */ [tabsintitlebar="true"] #TabsToolbar > .titlebar-buttonbox-container, #main-window[inFullscreen="true"] #window-controls { display: block; } /* Mehrzeilige Tableiste */ tabs > arrowscrollbox { display: block; } scrollbox[part][orient="horizontal"] { display: flex; flex-wrap: wrap; max-height: calc(var(--tab-min-height) * 2); /* Anzahl der Tabzeilen(Standard = 5 Zeilen) */ overflow-x: hidden; overflow-y: auto; } tabs tab[fadein]:not([pinned]) { flex-grow: 1; } tabs tab,.tab-background { height: var(--tab-min-height); overflow: hidden; z-index: 1 !important; } tab > .tab-stack { width: 100%; } /* Bei Überschreitung der angegebenen Zeilenanzahl, mit der Maus, über die dann eingeblendetet Scrolleiste zur gewünschten Zeile wechseln */ scrollbox[part][orient="horizontal"] > scrollbar { -moz-window-dragging: no-drag; } /* Drag-Bereich auf der linken und rechten Seite der Tab-Leiste ausblenden - verstecken Links und rechts → hbox.titlebar-spacer links → hbox.titlebar-spacer[type="pre-tabs"] rechts → hbox.titlebar-spacer[type="post-tabs"] */ hbox.titlebar-spacer , /* Ausblenden - Verstecken */ #alltabs-button,tabs tab:not([fadein]), [class="scrollbutton-up"], [class="scrollbutton-up"] + spacer, scrollbox[part][orient="horizontal"] + spacer, [class="scrollbutton-down"] { display: none; } } `; var sss = Cc['@mozilla.org/content/style-sheet-service;1'].getService(Ci.nsIStyleSheetService); var uri = makeURI('data:text/css;charset=UTF=8,' + encodeURIComponent(css)); sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET); var css =` tabs tab { border-left: solid 1px hsla(0,0%,50%,.5) !important; border-right: solid 1px hsla(0,0%,50%,.5) !important; } tabs tab:after,tabs tab:before { display: none !important; } `; var sss = Cc['@mozilla.org/content/style-sheet-service;1'].getService(Ci.nsIStyleSheetService); var uri = makeURI('data:text/css;charset=UTF=8,' + encodeURIComponent(css)); sss.loadAndRegisterSheet(uri, sss.AUTHOR_SHEET); gBrowser.tabContainer.clearDropIndicator = function() { var tabs = this.allTabs; for (let i = 0, len = tabs.length; i < len; i++) { tabs[i].style.removeProperty("border-left-color"); tabs[i].style.removeProperty("border-right-color"); } } gBrowser.tabContainer.addEventListener("dragleave", function(event) { this.clearDropIndicator(event); }, true); gBrowser.tabContainer.on_dragover = function(event) { this.clearDropIndicator(); var effects = this._getDropEffectForTabDrag(event); var ind = this._tabDropIndicator; if (effects == "" || effects == "none") { ind.hidden = true; return; } event.preventDefault(); event.stopPropagation(); var arrowScrollbox = this.arrowScrollbox; // autoscroll the tab strip if we drag over the scroll // buttons, even if we aren't dragging a tab, but then // return to avoid drawing the drop indicator var pixelsToScroll = 0; if (this.getAttribute("overflow") == "true") { switch (event.originalTarget) { case arrowScrollbox._scrollButtonUp: pixelsToScroll = arrowScrollbox.scrollIncrement * -1; break; case arrowScrollbox._scrollButtonDown: pixelsToScroll = arrowScrollbox.scrollIncrement; break; } if (pixelsToScroll) { arrowScrollbox.scrollByPixels( (RTL_UI ? -1 : 1) * pixelsToScroll, true ); } } /* let draggedTab = event.dataTransfer.mozGetDataAt(TAB_DROP_TYPE, 0); if ( (effects == "move" || effects == "copy") && this == draggedTab.container ) { ind.hidden = true; if (!this._isGroupTabsAnimationOver()) { // Wait for grouping tabs animation to finish return; } this._finishGroupSelectedTabs(draggedTab); if (effects == "move") { this._animateTabMove(event); return; } } this._finishAnimateTabMove(); */ if (effects == "link") { let tab = this._getDragTargetTab(event, true); if (tab) { if (!this._dragTime) { this._dragTime = Date.now(); } if (Date.now() >= this._dragTime + this._dragOverDelay) { this.selectedItem = tab; } ind.hidden = true; return; } } var rect = arrowScrollbox.getBoundingClientRect(); var newMargin; if (pixelsToScroll) { // if we are scrolling, put the drop indicator at the edge // so that it doesn't jump while scrolling let scrollRect = arrowScrollbox.scrollClientRect; let minMargin = scrollRect.left - rect.left; let maxMargin = Math.min( minMargin + scrollRect.width, scrollRect.right ); if (RTL_UI) { [minMargin, maxMargin] = [ this.clientWidth - maxMargin, this.clientWidth - minMargin, ]; } newMargin = pixelsToScroll > 0 ? maxMargin : minMargin; } else { let newIndex = this._getDropIndex(event, effects == "link"); let children = this.allTabs; if (newIndex == children.length) { let tabRect = children[newIndex - 1].getBoundingClientRect(); if (RTL_UI) { newMargin = rect.right - tabRect.left; } else { newMargin = tabRect.right - rect.left; } children[newIndex - 1].style.setProperty("border-right-color","red","important"); } else { let tabRect = children[newIndex].getBoundingClientRect(); if (RTL_UI) { newMargin = rect.right - tabRect.right; } else { newMargin = tabRect.left - rect.left; } children[newIndex].style.setProperty("border-left-color","red","important"); } } ind.hidden = false; newMargin += ind.clientWidth / 2; if (RTL_UI) { newMargin *= -1; } ind.style.transform = "translate(" + Math.round(newMargin) + "px)"; ind.style.marginInlineStart = -ind.clientWidth + "px"; } gBrowser.tabContainer.on_drop = function(event) { this.clearDropIndicator(); var dt = event.dataTransfer; var dropEffect = dt.dropEffect; var draggedTab; let movingTabs; if (dt.mozTypesAt(0)[0] == TAB_DROP_TYPE) { // tab copy or move draggedTab = dt.mozGetDataAt(TAB_DROP_TYPE, 0); // not our drop then if (!draggedTab) { return; } movingTabs = draggedTab._dragData.movingTabs; draggedTab.container._finishGroupSelectedTabs(draggedTab); } this._tabDropIndicator.hidden = true; event.stopPropagation(); if (draggedTab && dropEffect == "copy") { // copy the dropped tab (wherever it's from) let newIndex = this._getDropIndex(event, false); let draggedTabCopy; for (let tab of movingTabs) { let newTab = gBrowser.duplicateTab(tab); gBrowser.moveTabTo(newTab, newIndex++); if (tab == draggedTab) { draggedTabCopy = newTab; } } if (draggedTab.container != this || event.shiftKey) { this.selectedItem = draggedTabCopy; } } else if (draggedTab && draggedTab.container == this) { let oldTranslateX = Math.round(draggedTab._dragData.translateX); let tabWidth = Math.round(draggedTab._dragData.tabWidth); let translateOffset = oldTranslateX % tabWidth; let newTranslateX = oldTranslateX - translateOffset; if (oldTranslateX > 0 && translateOffset > tabWidth / 2) { newTranslateX += tabWidth; } else if (oldTranslateX < 0 && -translateOffset > tabWidth / 2) { newTranslateX -= tabWidth; } let dropIndex = this._getDropIndex(event, false); // "animDropIndex" in draggedTab._dragData && // draggedTab._dragData.animDropIndex; let incrementDropIndex = true; if (dropIndex && dropIndex > movingTabs[0]._tPos) { dropIndex--; incrementDropIndex = false; } let animate = gBrowser.animationsEnabled; if (oldTranslateX && oldTranslateX != newTranslateX && animate) { for (let tab of movingTabs) { tab.setAttribute("tabdrop-samewindow", "true"); tab.style.transform = "translateX(" + newTranslateX + "px)"; let onTransitionEnd = transitionendEvent => { if ( transitionendEvent.propertyName != "transform" || transitionendEvent.originalTarget != tab ) { return; } tab.removeEventListener("transitionend", onTransitionEnd); tab.removeAttribute("tabdrop-samewindow"); this._finishAnimateTabMove(); if (dropIndex !== false) { gBrowser.moveTabTo(tab, dropIndex); if (incrementDropIndex) { dropIndex++; } } gBrowser.syncThrobberAnimations(tab); }; tab.addEventListener("transitionend", onTransitionEnd); } } else { this._finishAnimateTabMove(); if (dropIndex !== false) { for (let tab of movingTabs) { gBrowser.moveTabTo(tab, dropIndex); if (incrementDropIndex) { dropIndex++; } } } } } else if (draggedTab) { let newIndex = this._getDropIndex(event, false); let newTabs = []; for (let tab of movingTabs) { let newTab = gBrowser.adoptTab(tab, newIndex++, tab == draggedTab); newTabs.push(newTab); } // Restore tab selection gBrowser.addRangeToMultiSelectedTabs( newTabs[0], newTabs[newTabs.length - 1] ); } else { // Pass true to disallow dropping javascript: or data: urls let links; try { links = browserDragAndDrop.dropLinks(event, true); } catch (ex) {} if (!links || links.length === 0) { return; } let inBackground = Services.prefs.getBoolPref( "browser.tabs.loadInBackground" ); if (event.shiftKey) { inBackground = !inBackground; } let targetTab = this._getDragTargetTab(event, true); let userContextId = this.selectedItem.getAttribute("usercontextid"); let replace = !!targetTab; let newIndex = this._getDropIndex(event, true); let urls = links.map(link => link.url); let csp = browserDragAndDrop.getCSP(event); let triggeringPrincipal = browserDragAndDrop.getTriggeringPrincipal( event ); (async () => { if ( urls.length >= Services.prefs.getIntPref("browser.tabs.maxOpenBeforeWarn") ) { // Sync dialog cannot be used inside drop event handler. let answer = await OpenInTabsUtils.promiseConfirmOpenInTabs( urls.length, window ); if (!answer) { return; } } gBrowser.loadTabs(urls, { inBackground, replace, allowThirdPartyFixup: true, targetTab, newIndex, userContextId, triggeringPrincipal, csp, }); })(); } if (draggedTab) { delete draggedTab._dragData; } } gBrowser.tabContainer._getDropIndex = function(event, isLink) { var tabs = this.allTabs; var tab = this._getDragTargetTab(event, isLink); if (!RTL_UI) { for (let i = tab ? tab._tPos : 0; i < tabs.length; i++) { if ( event.screenY < tabs[i].screenY + tabs[i].getBoundingClientRect().height ) { if ( event.screenX < tabs[i].screenX + tabs[i].getBoundingClientRect().width / 2 ) { return i; } if ( event.screenX > tabs[i].screenX + tabs[i].getBoundingClientRect().width / 2 && event.screenX < tabs[i].screenX + tabs[i].getBoundingClientRect().width ) { return i + 1; } } } } else { for (let i = tab ? tab._tPos : 0; i < tabs.length; i++) { if ( event.screenY < tabs[i].screenY + tabs[i].getBoundingClientRect().height ) { if ( event.screenX < tabs[i].screenX + tabs[i].getBoundingClientRect().width && event.screenX > tabs[i].screenX + tabs[i].getBoundingClientRect().width / 2 ) { return i; } if ( event.screenX < tabs[i].screenX + tabs[i].getBoundingClientRect().width / 2 ) { return i + 1; } } } } return tabs.length; } } -
Hat funktioniert.
Danke.
-
Das Fenster bleibt leer.
-
Hallo
Die Statusleiste macht Probleme bei Add-ons die ein extra Fenster öffnen für Einstellungen wie z.B. bei Sync Tab Group Einstellung Gruppe Importieren, öffnet sich ein Fenster, das aber leer ist. Wenn ich die Statusleiste entferne, ist der Inhalt in diesem Fenster wieder sichtbar.
-
Die Angehefteten Tabs sollen immer sichtbar bleiben auch beim Scrollen der Tabs.
-
JavaScript
Alles anzeigen// ==UserScript== // [user='11751']Name[/user] zzzz-MultiRowTab_LiteforFx48.uc.js // [user='11751']Name[/user]space http://space.geocities.yahoo.co.jp/gl/alice0775 // @description Experimentelle CSS Version für Mehrzeilige Tableiste // @include main // @compatibility Firefox 69 // @author Alice0775 // @version 2016/08/05 00:00 Firefox 48 // @version 2016/05/01 00:01 hide favicon if busy // @version 2016/03/09 00:01 Bug 1222490 - Actually remove panorama for Fx45+ // @version 2016/02/09 00:01 workaround css for lwt // @version 2016/02/09 00:00 // ==/UserScript== "user strict"; MultiRowTabLiteforFx(); function MultiRowTabLiteforFx() { var css =` @-moz-document url-prefix("chrome://browser/content/browser.xhtml") { /* Mehrzeilige Tableiste */ tabs>arrowscrollbox{display:block;} tabs arrowscrollbox>scrollbox { display:flex;display:-webkit-box;flex-wrap:wrap; max-height: calc(var(--tab-min-height) * 2); /* Anzahl der Tabzeilen */ overflow-x:hidden;overflow-y:auto; } [tabsintitlebar="true"] tabs scrollbar{-moz-window-dragging:no-drag;} /* Bei Überschreitung der angegebenen Zeilenanzahl, mit der Maus, über die dann eingeblendetet Scrolleiste zu Zeile wechseln */ tabs tab[fadein]:not([pinned]){flex-grow:1;} tabs tab,.tab-background { height: var(--tab-min-height); overflow: hidden; z-index: 1 !important; } tab>.tab-stack{width:100%;} [sizemode="fullscreen"] #TabsToolbar>#window-controls, .titlebar-buttonbox-container>.titlebar-buttonbox{display:block;} /* Drag-Bereich auf der linken und rechten Seite der Tab-Leiste auslenden - verstecken Links und rechts → hbox.titlebar-spacer links → hbox.titlebar-spacer[type="pre-tabs"] rechts → hbox.titlebar-spacer[type="post-tabs"] */ hbox.titlebar-spacer /* Ausblenden - Verstecken */ ,#alltabs-button,tabs [class^="scrollbutton"],tabs spacer,[autohide="true"][inactive="true"] .titlebar-buttonbox { display: none; } } `; var sss = Cc['@mozilla.org/content/style-sheet-service;1'].getService(Ci.nsIStyleSheetService); var uri = makeURI('data:text/css;charset=UTF=8,' + encodeURIComponent(css)); sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET); var style = ' \ tabs tab:not(stack) { \ border-left: solid 1px hsla(0,0%,50%,.5) !important; \ border-right: solid 1px hsla(0,0%,50%,.5) !important; \ } \ tabs tab:after,tabs tab:before{display:none!important;} \ '; var sspi = document.createProcessingInstruction('xml-stylesheet', 'type="text/css" href="data:text/css,' + encodeURIComponent(style) + '"'); document.insertBefore(sspi, document.documentElement); gBrowser.tabContainer._animateTabMove = function(event){} gBrowser.tabContainer._finishAnimateTabMove = function(){} gBrowser.tabContainer.lastVisibleTab = function() { var tabs = this.allTabs; for (let i = tabs.length - 1; i >= 0; i--){ if (!tabs[i].hasAttribute("hidden")) return i; } return -1; } gBrowser.tabContainer.clearDropIndicator = function() { var tabs = this.allTabs; for (let i = 0, len = tabs.length; i < len; i++){ let tab_s= tabs[i].style; tab_s.removeProperty("border-left-color"); tab_s.removeProperty("border-right-color"); } } gBrowser.tabContainer.addEventListener("dragleave",gBrowser.tabContainer.clearDropIndicator, false); gBrowser.tabContainer._onDragOver = function(event) { event.preventDefault(); event.stopPropagation(); this.clearDropIndicator(); var newIndex = this._getDropIndex(event); if (newIndex == null) return; let children = this.allTabs; if (newIndex < children.length) { children[newIndex].style.setProperty("border-left-color","red","important"); } else { newIndex = gBrowser.tabContainer.lastVisibleTab(); if (newIndex >= 0) children[newIndex].style.setProperty("border-right-color","red","important"); } } gBrowser.tabContainer.addEventListener("dragover", gBrowser.tabContainer._onDragOver, false); gBrowser.tabContainer.onDrop = function(event) { this.clearDropIndicator(); var dt = event.dataTransfer; var draggedTab; if (dt.mozTypesAt(0)[0] == TAB_DROP_TYPE) { draggedTab = dt.mozGetDataAt(TAB_DROP_TYPE, 0); if (!draggedTab) { return; } } this._tabDropIndicator.hidden = true event.stopPropagation(); if (draggedTab && draggedTab.container == this) { let newIndex = this._getDropIndex(event, false); if (newIndex > draggedTab._tPos) newIndex--; gBrowser.moveTabTo(draggedTab, newIndex); } } gBrowser.tabContainer.addEventListener("drop",gBrowser.tabContainer.onDrop, false); gBrowser.tabContainer._getDragTargetTab = function(event, isLink) { let tab = event.target; while (tab && tab.localName != "tab") { tab = tab.parentNode; } if (tab && isLink) { let { width } = tab.getBoundingClientRect(); if ( event.screenX < tab.screenX + width * 0.25 event.screenX > tab.screenX + width * 0.75 ) { return null; } } return tab; } gBrowser.tabContainer._getDropIndex = function(event, isLink) { var tabs = this.allTabs; var tab = this._getDragTargetTab(event, isLink); if (!RTL_UI) { for (let i = tab ? tab._tPos : 0; i < tabs.length; i++) { if ( event.screenY < tabs[i].screenY + tabs[i].getBoundingClientRect().height ) { if ( event.screenX < tabs[i].screenX + tabs[i].getBoundingClientRect().width / 2 ) { return i; } if ( event.screenX > tabs[i].screenX + tabs[i].getBoundingClientRect().width / 2 && event.screenX < tabs[i].screenX + tabs[i].getBoundingClientRect().width ) { return i + 1; } } } } else { for (let i = tab ? tab._tPos : 0; i < tabs.length; i++) { if ( event.screenY < tabs[i].screenY + tabs[i].getBoundingClientRect().height ) { if ( event.screenX < tabs[i].screenX + tabs[i].getBoundingClientRect().width && event.screenX > tabs[i].screenX + tabs[i].getBoundingClientRect().width / 2 ) { return i; } if ( event.screenX < tabs[i].screenX + tabs[i].getBoundingClientRect().width / 2 ) { return i + 1; } } } } return tabs.length; } } -
Hallo
Es geht um das Script MultiRowTabLiteforFx.uc.js, kann man das Script so ändern das sich die Angehefteten Tabs nicht mit Bewegen.

-
Hallo
Es geht um das Script MultiRowTabLiteforFx.uc.js, kann man das Script so ändern das sich die Angehefteten Tabs nicht mit Bewegen.
-