1. Nachrichten
  2. Forum
    1. Unerledigte Themen
    2. Forenregeln
  3. Spenden
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. camp-firefox.de
  2. Rob

Beiträge von Rob

  • Alternative Suchleiste + Multirow: Darstellungsprobleme seit Fx96 (Wechselwirkung)

    • Rob
    • 26. Januar 2022 um 17:37
    Zitat von .DeJaVu

    Aus dem Script

    // @include *://*

    Ergänzen um (Beispiel)

    // @exclude */www.camp-firefox.de/*

    Damit werden bestimmte Seiten ausgenommen.

    Danke hab es in den Violentmonkey Einstellungen des Skripts als Ausnahme hinzugefügt, damit eventuelle Updates nicht überschreiben.

    Dies hat aber nichts mit den Problemen aus dem ersten Post zu tun, sondern hat sich nur zufällig ergeben.

    Das eigentliche Problem besteht weiterhin.

  • Alternative Suchleiste + Multirow: Darstellungsprobleme seit Fx96 (Wechselwirkung)

    • Rob
    • 26. Januar 2022 um 17:14
    Zitat von milupo
    Zitat von Rob

    Hab es aus Notepad++ und Notepad kopiert um sicher zugehen, dass nicht das Programm die Einrückungen geschluckt hat. Eventuell hätte ich es direkt von Github kopieren sollen.

    Halte dich an die Schrittfolge, wie ich sie dir beschrieben habe und du hast dann auch eine wunderschöne Formatierung. Das klappt immer.

    Habe den Fehler gefunden: Das Userscript/Violentmonkey Skript Absolute Enable Right Click hat interveniert und die Probleme verursacht.

  • Alternative Suchleiste + Multirow: Darstellungsprobleme seit Fx96 (Wechselwirkung)

    • Rob
    • 24. Januar 2022 um 19:49
    Zitat von milupo
    Zitat von 2002Andreas

    Hat er doch gemacht

    Hat aber nicht richtig funktioniert. Und ich habe ihm eine Schritt-für-Schritt-Anleitung gegeben, wie es auf jeden Fall funktioniert und mit Syntax-Hervorhebung.

    Hab es aus Notepad++ und Notepad kopiert um sicher zugehen, dass nicht das Programm die Einrückungen geschluckt hat. Eventuell hätte ich es direkt von Github kopieren sollen.


    €: Habe es auch penibel genau befolgt, dennoch kam ich aufs selbe Ergebnis. Kann leider nicht sagen warum die Formatierung "geschluckt" wird. Sowohl Notepad++ als auch Windows Notepad zeigen die Formatierung bei mir an.

    Zitat von 2002Andreas
    Zitat von Rob

    hab ich den Schalter für alte Darstellung und Namen an in der Suchleiste

    Welchen Schalter meinst du damit?

    Ansonsten kann ich dein Problem hier nicht bestätigen :/

    Mehrmals Fenstergröße verändert...Neustart..alles Ok hier

    Um absolut sicher zu gehen, habe ich noch einmal alles im Chrome Ordner, außer "userChrome.js", "alternative_searchbar.uc.js" und "MultiRowTabLiteforFx.uc.js", in den Papierkorb verschoben. Doch der Fehler tritt weiterhin auf. Er tritt zwar nicht immer auf, aber in den meisten fällen.

    Umgekehrt tritt der Fehler nicht mehr auf, wenn ich nur alternative Searchbar lösche oder aber nur Multirow und alles andere bleibt erhalten.

    Ich habe keine Ahnung wo noch der Unterschied liegen könnte.

  • Alternative Suchleiste + Multirow: Darstellungsprobleme seit Fx96 (Wechselwirkung)

    • Rob
    • 24. Januar 2022 um 16:05

    Hier auch einmal die Skripte angehangen, wobei ich ursprünglich dachte die Ansicht über Github ist am bequemsten:

    JavaScript: Alternative Searchbar
    // 'Alternative search bar' script for Firefox 91+ by Aris
    //
    // Thanks to UndeadStar (aka BoomerangAide) for Fx 69+ improvements
    // https://github.com/Aris-t2/CustomJSforFx/issues/11
    //
    // Thanks to samehb (aka Sameh Barakat) for Fx 68-75+ improvements 
    // https://github.com/Aris-t2/CustomJSforFx/issues/11
    //
    // Thanks to anomiex for the setIcon workaround on Fx 77+
    // https://github.com/Aris-t2/CustomJSforFx/issues/33
    //
    // Idea based on 'search revert' script by '2002Andreas':
    // https://www.camp-firefox.de/forum/viewtopic.php?f=16&t=112673&start=2010#p1099758
    //
    // Initial "old search" script ported from old Firefox versions by Aris
    //
    //
    // Feature (not optional): search glass is always visible at search bars end (like with "old" search)
    // Feature (not optional): search button shows current search engines icon (like with "old" search)
    // Feature (not optional): search buttons dropmarker is always visible (like with "old" search)
    //
    // Option: clear search input after search
    // Option: revert to first search engine in list after search
    // Option: old search engine selection popup
    // Option: hide 'add engines' '+' indicator
    // Option: hide 'oneoff' search engines (engines at popups bottom)
    // Option: hide placeholder text 'Search'
    // Option: swap the icons of search engine button and go button
    // Option: show icons and search engine names instead of only icons
    // Option: select search engine by scrolling mouse wheel over search bars button
    
    // [!] Default browser feature: search engine can be changed inside default/modern popup by right-clicking
    //     search icon and selecting 'Set As Default Search Engine' menuitem.
    
    
    // Configuration area - start (all 'false' by default)
    var clear_searchbar_after_search = false; // clear input after search (true) or not (false)
    var revert_to_first_engine_after_search = false; // revert to first engine (true) or not (false)
    var old_search_engine_selection_popup = true; // show old search engine selection popup (true) or not (false)
    var select_engine_by_scrolling_over_button = false; // select search engine by scrolling mouse wheel over search bars button (true) or not (false)
    var select_engine_by_click_oneoffs_button = false; // select search engine by left-clicking search icon (true) or not (false)
    var hide_oneoff_search_engines = false; // hide 'one off' search engines (true) or not (false)
    var hide_addengines_plus_indicator = false; // hide add engines '+' sign (true) or not (false)
    var hide_placeholder = false; // hide placeholder (true) or not (false)
    var switch_glass_and_engine_icon = false; // swap icons of search engine button and go button (true) or not (false)
    var show_search_engine_names = true; // show search engine names (true) or not (false)
    var show_search_engine_names_with_scrollbar = false; // show search engine names with scrollbars (true) or not (false)
    var show_search_engine_names_with_scrollbar_height = '170px'; // higher values show more search engines
    var initialization_delay_value = 0; // some systems might require a higher value than '1' second (=1000ms) and on some even '0' is enough
    var searchsettingslabel = "Ändere Sucheinstellungen";
    // Configuration area - end
    
    var isInCustomize = 1; //start at 1 to set it once at startup
    
    Cu.import('resource://gre/modules/Services.jsm');
    
    var AltSearchbar = {
     init: async function() {
       await Services.search.wrappedJSObject._initObservers.promise;
    
       if (location != 'chrome://browser/content/browser.xhtml')
        return;
    
       window.removeEventListener("load", AltSearchbar.init, false);
    
       try {
           
        var searchbar = document.getElementById("searchbar");
        var appversion = parseInt(Services.appinfo.version);
    
        if(!old_search_engine_selection_popup)
          updateStyleSheet();
        
        if(hide_placeholder)
          hideSearchbarsPlaceholder();
    
        if(select_engine_by_scrolling_over_button)
          selectEngineByScrollingOverButton();
    
        if(old_search_engine_selection_popup)
          createOldSelectionPopup();
    
        if (select_engine_by_click_oneoffs_button)
          selectEngineByClickOneoffsButton();
    
        // select search engine by scrolling mouse wheel over search bars button
        function selectEngineByScrollingOverButton() {
          searchbar.addEventListener("DOMMouseScroll", (event) => {
            if (event.originalTarget.classList.contains("searchbar-search-button")) {
              searchbar.selectEngine(event, event.detail > 0);
            }
          }, true);
        };
    
        // left click on off select engine
        function selectEngineByClickOneoffsButton() {
            var searchoneoffs = searchbar.textbox.popup.oneOffButtons;
            searchoneoffs.container.addEventListener("click", (event) => {
                if (!(event instanceof KeyboardEvent) && (event.button == 0)) {
                    event.stopPropagation();
                    event.target.classList.add("search-one-offs-context-set-default");
                    searchoneoffs._contextEngine = event.target.engine;
                    searchoneoffs._on_command(event);
                    searchoneoffs._contextEngine = null;
                    // let contextEngine = event.target.engine;
                    // let currentEngine = searchbar.currentEngine;
                    // if (!searchoneoffs.getAttribute("includecurrentengine")) {
                    //     // Make the target button of the context menu reflect the current
                    //     // search engine first. Doing this as opposed to rebuilding all the
                    //     // one-off buttons avoids flicker.
                    //     let button = searchoneoffs._buttonForEngine(contextEngine);
                    //     button.id = searchoneoffs._buttonIDForEngine(currentEngine);
                    //     let uri = "chrome://browser/skin/search-engine-placeholder.png";
                    //     if (currentEngine.iconURI) {
                    //         uri = currentEngine.iconURI.spec;
                    //     }
                    //     button.setAttribute("image", uri);
                    //     button.setAttribute("tooltiptext", currentEngine.name);
                    //     button.engine = currentEngine;
                    // }
                    // searchbar.currentEngine = contextEngine;
                }
            }, true);
        };
        
        // hide placeholder
        function hideSearchbarsPlaceholder() {
          searchbar.getElementsByClassName('searchbar-textbox')[0].removeAttribute("placeholder");
        };
    
        function attachOldPopupToButton(e) {
            if(isInCustomize == 1) {
                setTimeout(function () { searchbar.getElementsByClassName("searchbar-search-button")[0].setAttribute("popup", "searchbuttonpopup"); }, initialization_delay_value);
            }
            if(isInCustomize > 0)
                isInCustomize--;
        }
    
        // old search selection popup
        async function createOldSelectionPopup() {
    
            searchbar.engines = await Services.search.getVisibleEngines();
            
            window.addEventListener("beforecustomization", function(e) { isInCustomize++; }, false);
            window.addEventListener("aftercustomization", attachOldPopupToButton, false);        
    
            // set new search engine
            searchbar.setNewSearchEngine = function(index) {
                searchbar.currentEngine = searchbar.engines[index];
                updateStyleSheet();
            };
    
            // create search popup
            searchbuttonpopup = document.createXULElement("menupopup");
            searchbuttonpopup.setAttribute("id", "searchbuttonpopup");
            searchbuttonpopup.setAttribute("width", searchbar.getBoundingClientRect().width - 6 );
            searchbuttonpopup.setAttribute("position", "after_start");
          
            try {
                
                var hidden_list = Services.prefs.getStringPref("browser.search.hiddenOneOffs");
                hidden_list =  hidden_list ? hidden_list.split(",") : [];                    
    
                for (var i = 0; i <= searchbar.engines.length - 1; ++i) {
                            
                    if(!hidden_list.includes(searchbar.engines[i].name)) {
                            
                        menuitem = document.createXULElement("menuitem");;
                        menuitem.setAttribute("label", searchbar.engines[i].name);
                        menuitem.setAttribute("tooltiptext", searchbar.engines[i].name);
                                menuitem.setAttribute("class", "menuitem-iconic searchbar-engine-menuitem menuitem-with-favicon");
                
                        if (searchbar.engines[i] == searchbar.currentEngine)
                                menuitem.setAttribute("selected", "true");
                
                        if (searchbar.engines[i].iconURI)
                            menuitem.setAttribute("image",searchbar.engines[i].iconURI.spec);
                                
                                menuitem.setAttribute("oncommand", "document.getElementById('searchbar').setNewSearchEngine("+i+")");
    
                                searchbuttonpopup.appendChild(menuitem);
                                
                            }
          
                        }
            
                        menuseparator_om = document.createXULElement("menuseparator");
                        searchbuttonpopup.appendChild(menuseparator_om);
    
                        menuitem_om = document.createXULElement("menuitem");
                        menuitem_om.setAttribute("label", searchsettingslabel);
                        menuitem_om.setAttribute("class", "open-engine-manager");
                        menuitem_om.setAttribute("oncommand", "openPreferences('search');");
                        searchbuttonpopup.appendChild(menuitem_om);    
    
                        updateStyleSheet();
            
            } catch(exc) {
              console.log("Exception AltSearchbar: " + exc);
            }
    
          document.getElementById("mainPopupSet").appendChild(searchbuttonpopup);
    
          // adjust popup width
          setTimeout(function(){
            document.getElementById('searchbuttonpopup').setAttribute("width", document.getElementById("searchbar").getBoundingClientRect().width);
          },1000);
    
          var observer_width = new MutationObserver(function(mutations,observer) {
            observer.disconnect();
            try {
              document.getElementById('searchbuttonpopup').setAttribute("width", document.getElementById("searchbar").getBoundingClientRect().width );
            } catch(e){}
            observer.observe(document.getElementById('search-container'), { attributes: true, attributeFilter: ['width'] });
            observer.observe(document.getElementById('main-window'), { attributes: true, attributeFilter: ['sizemode'] });
          });
    
          try {
            observer_width.observe(document.getElementById('search-container'), { attributes: true, attributeFilter: ['width'] });
            observer_width.observe(document.getElementById('main-window'), { attributes: true, attributeFilter: ['sizemode'] });
          } catch(e){}
          
          // restore "add search engine" menuitem
    
          // attach new popup to search bars search button
          try {
            attachOldPopupToButton();    
          }
          catch(e) {
              console.log("AltSearchbar: Failed to attach new popup to search bar search button");
          }
          
        // Refresh the script's search popup (searchbuttonpopup) with any changes made to search engines/options.
        async function updateEngines() {
        var i;
    
        try {
    
            searchbuttonpopup = document.getElementById("searchbuttonpopup");
    
            searchbar.engines = await Services.search.getVisibleEngines();
    
            try {
    
                while (searchbuttonpopup.childNodes[0].tagName.toLowerCase() != "menuseparator")
                    searchbuttonpopup.removeChild(searchbuttonpopup.firstChild);
    
                var separator = searchbuttonpopup.childNodes[0];
    
                var hidden_list = Services.prefs.getStringPref("browser.search.hiddenOneOffs");
                hidden_list = hidden_list ? hidden_list.split(",") : [];
    
                for (i = 0; i <= searchbar.engines.length - 1; ++i) {
    
                    if (!hidden_list.includes(searchbar.engines[i].name)) {
    
                        menuitem = document.createXULElement("menuitem");;
                        menuitem.setAttribute("label", searchbar.engines[i].name);
                        menuitem.setAttribute("class", "menuitem-iconic searchbar-engine-menuitem menuitem-with-favicon");
                        menuitem.setAttribute("tooltiptext", searchbar.engines[i].name);
    
                        if (searchbar.engines[i] == searchbar.currentEngine)
                            menuitem.setAttribute("selected", "true");
    
                        if (searchbar.engines[i].iconURI)
                            menuitem.setAttribute("image", searchbar.engines[i].iconURI.spec);
    
                        menuitem.setAttribute("oncommand", "document.getElementById('searchbar').setNewSearchEngine(" + i + ")");
    
                        searchbuttonpopup.insertBefore(menuitem, separator);
    
                    }
    
                }
    
                updateStyleSheet();
    
            } catch (exc) {
                console.log(exc);
            }
    
        } catch (exc) {
            console.log("update altbar exc: " + exc);
        }
    }
    
    // Used to observe modifications made to search engines. We are only interested in the addition and removal of engines.
    Services.obs.addObserver(function observer(subject, topic, data) {
        // If a search engine/option is added or removed, we need to refresh the script's popup. We use updateEngines() to do that.
        if (data == "engine-added" || data == "engine-removed" || data == "engine-changed") {
            updateEngines();
        }
    }, "browser-search-engine-modified");
    
    // Observe the enabling and disabling of search engines, and update the search popup.
    Services.prefs.addObserver("browser.search.hiddenOneOffs", function observer(subject, topic, data) {
       updateEngines();
    });
    
    // Used to create an add engine item and append it into the script's search popup (searchbuttonpopup). This is the option
    // that is displayed as "Add enginename" e.g. Add DuckDuckGo.
    function createAddEngineItem(e) {
            try {
    
                e.target.removeEventListener(e.type, arguments.callee);
    
                searchbuttonpopup = document.getElementById("searchbuttonpopup");
                
                while (searchbuttonpopup.lastChild.classList.contains("custom-addengine-item")) {
                    searchbuttonpopup.removeChild(searchbuttonpopup.lastChild);
                }
                
                setTimeout(function () { //setTimeout fix an issue where labels don't get displayed
                    
                    let native_popup_search_add_items_collection = document.getElementsByClassName("searchbar-engine-one-off-add-engine");
                    var native_popup_search_add_items = new Array();
                    
                    for(i = 0; i < native_popup_search_add_items_collection.length; i++) {
                        if(!native_popup_search_add_items_collection[i].parentElement.parentElement.parentElement.parentElement.hasAttribute("class")) {
                            native_popup_search_add_items.push(native_popup_search_add_items_collection[i]);
                        }
                    }
                    
                    if (native_popup_search_add_items.length != 0) {
    
                        if (searchbuttonpopup.lastChild.tagName.toLowerCase() != "menuseparator") {
                            searchbuttonpopup.appendChild(document.createXULElement("menuseparator"));
                            searchbuttonpopup.appendChild(document.createXULElement("menuseparator"));
                        }
    
                        for(i = 0; i < native_popup_search_add_items.length; i++) {
                            
                            menuitem = document.createXULElement("menuitem");
                            menuitem.setAttribute("label", native_popup_search_add_items[i].getAttribute("label"));
                            menuitem.setAttribute("class", "menuitem-iconic searchbar-engine-menuitem menuitem-with-favicon custom-addengine-item");
                            menuitem.setAttribute("tooltiptext", native_popup_search_add_items[i].getAttribute("label"));
                            menuitem.setAttribute("uri", native_popup_search_add_items[i].getAttribute("uri"));
                            menuitem.setAttribute("data-id", native_popup_search_add_items[i].id);
                            menuitem.setAttribute("oncommand", "document.getElementById(\"" + native_popup_search_add_items[i].id + "\").click();");
    
                            if (native_popup_search_add_items[i].hasAttribute("image"))
                                menuitem.setAttribute("image", native_popup_search_add_items[i].getAttribute("image"));
    
                            searchbuttonpopup.appendChild(menuitem);
    
                        };
    
                    } 
                    else {
                        while (searchbuttonpopup.lastChild.tagName.toLowerCase() == "menuseparator")
                            searchbuttonpopup.removeChild(searchbuttonpopup.lastChild);
                    }        
                
                }, 0 );
          
            }
            catch (exc) {
              console.log("custom addengine exc: " + exc);
            }
          }    
    
          searchbar.addEventListener("mousedown", (event) => {
            var defaultPopup = document.getElementById("PopupSearchAutoComplete"); // Browser's default search popup.
            var scriptPopup = document.getElementById("searchbuttonpopup");
            var addEngineItem = document.getElementsByClassName("custom-addengine-item")[0];
            var searchButton = document.getElementsByClassName("searchbar-search-button")[0];
    
            // hasAddEnginesAttribute == true means there is a search engine provided by the page, for us to add using "Add enginename."
            // You will see a green plus badge on the search button icon, if that is the case.
            var hasAddEnginesAttribute = searchButton.hasAttribute("addengines");
    
            // Skip clicks on the search button until searchbuttonpopup is available. Disable propagation, too.
            if (!scriptPopup) {
                event.stopPropagation();
                return;
            }
    
            defaultPopup.style.visibility = "visible";
    
            // If the user clicks on any element on the search bar except the search text.
            if (event.target.getAttribute("class") != "searchbar-textbox") {
    
                // In case the default search popup is shown, hide it.
                defaultPopup.hidePopup();
    
                // Propagation causes PopupSearchAutoComplete to be shown, which in turn causes search-add-engines to be populated.
                // We monitor the PopupSearchAutoComplete and after it is shown, we use createAddEngineItem() to create the add
                // engine item and populate the script's popup (searchbuttonpopup). Propagation causes PopupSearchAutoComplete to be 
                // displayed with searchbuttonpopup, at the same time (when the user clicks the search button). Displaying 
                // PopupSearchAutoComplete with every search button click is inefficient. We allow propagation only when it is needed, 
                // and we set the PopupSearchAutoComplete visibility to collapse, so we do not see it with the script's popup.
    
                // If there are no changes to be done to the searchbuttonpopup, go ahead and skip propagation.
                // If there is an engine to be added, and the engine item is already available on the script's popup, there are no changes.
                // If there is no engine to be added, and there is no engine item, that also means that there are no changes needed.
                // On the other hand, if hasAddEnginesAttribute and addEngineItem are not synchronized, we need to apply propagation
                // to refresh the searchbuttonpopup. We set the addEngineItem visibility to collapse, and allow propagation.
                if ((hasAddEnginesAttribute && addEngineItem && addEngineItem.hasAttribute("image") && document.getElementById(addEngineItem.getAttribute("data-id")) && gBrowser.currentURI.spec.includes(addEngineItem.getAttribute("uri").match(/.+:\/\/([^\/]+)\//)[1])) || (!hasAddEnginesAttribute && !addEngineItem))
                    event.stopPropagation();
                else {
                    defaultPopup.style.visibility = "collapse";
                    defaultPopup.addEventListener("popupshown", createAddEngineItem, false);
                }
            }
    
            /*searchbar.focus();*/
    
          }, true);
    
        }; //createOldSelectionPopup
        
        // doSearch function taken from Firefox 85+ internal 'searchbar.js' file and added modifications
        searchbar.doSearch = function(aData, aWhere, aEngine, aParams, isOneOff = false) {
          let textBox = this._textbox;
          let engine = aEngine || this.currentEngine;
    
          // Save the current value in the form history
          if (
            aData &&
            !PrivateBrowsingUtils.isWindowPrivate(window) &&
            this.FormHistory.enabled &&
            aData.length <=
              this.SearchSuggestionController.SEARCH_HISTORY_MAX_VALUE_LENGTH
          ) {
            this.FormHistory.update(
              {
                op: "bump",
                fieldname: textBox.getAttribute("autocompletesearchparam"),
                value: aData,
                source: engine.name,
              },
              {
                handleError(aError) {
                  Cu.reportError(
                    "Saving search to form history failed: " + aError.message
                  );
                },
              }
            );
          }
    
          let submission = engine.getSubmission(aData, null, "searchbar");
    
          // If we hit here, we come either from a one-off, a plain search or a suggestion.
          const details = {
            isOneOff,
            isSuggestion: !isOneOff && this.telemetrySelectedIndex != -1,
            url: submission.uri,
          };
    
          this.telemetrySelectedIndex = -1;
    
          BrowserSearchTelemetry.recordSearch(
            gBrowser.selectedBrowser,
            engine,
            "searchbar",
            details
          );
          // null parameter below specifies HTML response for search
          let params = {
            postData: submission.postData,
          };
          if (aParams) {
            for (let key in aParams) {
              params[key] = aParams[key];
            }
          }
          openTrustedLinkIn(submission.uri.spec, aWhere, params);
          
            if(clear_searchbar_after_search)
                this.value = '';
              
            if(revert_to_first_engine_after_search) {
                searchbar.currentEngine = searchbar.engines[0];
                updateStyleSheet();
            }
    
        };
        
        // Workaround for the deprecated setIcon funtion
        var oldUpdateDisplay = searchbar.updateDisplay;
        searchbar.updateDisplay = function() {
          oldUpdateDisplay.call(this);
          updateStyleSheet();
        };
        
        // main style sheet
        function updateStyleSheet() {
          var sss = Components.classes["@mozilla.org/content/style-sheet-service;1"].getService(Components.interfaces.nsIStyleSheetService);
    
          var hide_oneoff_search_engines_code = '';
          var show_search_engine_names_code = '';
          var show_search_engine_names_with_scrollbar_code = '';
          var hide_addengines_plus_indicator_code = '';
          var switch_glass_and_engine_icon_code = '';
    
          if(hide_oneoff_search_engines)
            hide_oneoff_search_engines_code=' \
              #PopupSearchAutoComplete .search-panel-header, \
              #PopupSearchAutoComplete .search-one-offs { \
                display: none !important; \
              } \
            ';
    
          if(hide_addengines_plus_indicator)
           hide_addengines_plus_indicator_code=' \
             .searchbar-search-button[addengines=true]::after { \
               visibility: hidden !important; \
             } \
           ';
        
          if(show_search_engine_names && !hide_oneoff_search_engines)
           show_search_engine_names_code=' \
            #PopupSearchAutoComplete .search-panel-one-offs .searchbar-engine-one-off-item { \
              -moz-appearance:none !important; \
              min-width: 0 !important; \
              width: 100% !important; \
              border: unset !important; \
              height: 22px !important; \
              background-image: unset !important; \
              padding-inline-start: 3px !important; \
            } \
            #PopupSearchAutoComplete .search-panel-one-offs .searchbar-engine-one-off-item:not([tooltiptext]) { \
              display: none !important; \
            } \
            #PopupSearchAutoComplete .search-panel-one-offs .searchbar-engine-one-off-item .button-box { \
              display: block !important; \
              padding-inline-start: 4px !important; \
              margin-top: 3px !important; \
            } \
            #PopupSearchAutoComplete .search-panel-one-offs .searchbar-engine-one-off-item::after { \
              -moz-appearance: none !important; \
              display: inline !important; \
              content: attr(tooltiptext) !important; \
              position: relative !important; \
              top: -9px !important; \
              padding-inline-start: 25px !important; \
            } \
            #PopupSearchAutoComplete .search-panel-one-offs { \
              min-height: unset !important; \
              height: unset !important; \
              max-height: unset !important; \
            } \
            #PopupSearchAutoComplete .search-setting-button { \
              align-self: unset !important; \
              margin-top: -22px !important; \
              position: absolute !important; \
            } \
               ';
    
          if(show_search_engine_names_with_scrollbar && !hide_oneoff_search_engines && show_search_engine_names)
           show_search_engine_names_with_scrollbar_code=' \
            #PopupSearchAutoComplete .search-one-offs { \
              height: '+show_search_engine_names_with_scrollbar_height+' !important; \
              max-height: '+show_search_engine_names_with_scrollbar_height+' !important; \
              overflow-y: scroll !important; \
              overflow-x: hidden !important; \
            } \
            \
            ';
    
          if(switch_glass_and_engine_icon)
           switch_glass_and_engine_icon_code=' \
            .search-go-button { \
              list-style-image: url('+document.getElementById("searchbar").currentEngine.iconURI.spec+') !important; \
              transform: scaleX(1) !important; \
            } \
            .searchbar-search-button .searchbar-search-icon { \
              list-style-image: url("chrome://global/skin/icons/search-glass.svg") !important; \
              -moz-context-properties: fill, fill-opacity !important; \
              fill-opacity: 1.0 !important; \
              fill: #3683ba !important; \
            } \
            .searchbar-search-button:hover .searchbar-search-icon { \
              fill: #1d518c !important; \
            } \
            .searchbar-search-button:active .searchbar-search-icon { \
              fill: #00095d !important; \
            } \
            \
            ';
    
          var uri = Services.io.newURI("data:text/css;charset=utf-8," + encodeURIComponent(' \
            \
            #search-container{ min-width: 20px !important } \
            #searchbuttonpopup {\
             margin-inline-start: -1px; \
            } \
            .searchbar-search-button .searchbar-search-icon { \
              list-style-image: url('+document.getElementById("searchbar").currentEngine.iconURI.spec+') !important; \
            } \
            .search-go-button { \
              list-style-image: url("chrome://global/skin/icons/search-glass.svg") !important; \
              -moz-context-properties: fill, fill-opacity !important; \
              fill-opacity: 1.0 !important; \
              fill: #3683ba !important; \
              transform: scaleX(-1) !important; \
              background: unset !important; \
              margin-inline-end: 4px !important; \
            } \
            .search-go-button:hover { \
              fill: #1d518c !important; \
            } \
            .search-go-button:active { \
              fill: #00095d !important; \
            } \
            .search-go-button[hidden="true"] { \
              display: block !important; \
            } \
            .searchbar-search-button[addengines=true] > .searchbar-search-icon-overlay, \
            .searchbar-search-button:not([addengines=true]) > .searchbar-search-icon-overlay { \
              list-style-image: url("chrome://global/skin/icons/arrow-down-12.svg") !important; \
              -moz-context-properties: fill !important; \
              margin-inline-start: -6px !important; \
              margin-inline-end: 2px !important; \
              width: 11px !important; \
              height: 11px !important; \
            } \
            .searchbar-search-button[addengines=true] > .searchbar-search-icon-overlay { \
              margin-top: 0px !important; \
            } \
            .searchbar-search-button[addengines=true]::after { \
              content: " " !important; \
              background: url("chrome://browser/skin/search-indicator-badge-add.svg") center no-repeat !important; \
              display: block !important; \
              visibility: visible !important; \
              width: 11px !important; \
              height: 11px !important; \
              margin-inline-start: 18px !important; \
              margin-top: -11px !important; \
              position: absolute !important; \
            } \
            .searchbar-search-button[addengines=true] > .searchbar-search-icon-overlay { \
              visibility: visible !important; \
            } \
             \
            .custom-addengine-item > .menu-iconic-left::after { \
              position: absolute !important; \
              display: block; !important; \
              content: "" !important; \
              background: url("chrome://browser/skin/search-indicator-badge-add.svg") no-repeat center !important; \
              box-shadow: none  !important; \
              margin-top: -12px !important; \
              margin-inline-start: -4px !important; \
              width: 11px; !important; \
              height: 11px; !important; \
              min-width: 11px; !important; \
              min-height: 11px; !important; \
            } \
            '+hide_addengines_plus_indicator_code+' \
            '+hide_oneoff_search_engines_code+' \
            '+show_search_engine_names_code+' \
            '+show_search_engine_names_with_scrollbar_code+' \
            '+switch_glass_and_engine_icon_code+' \
            \
          '), null, null);
    
          // remove old style sheet
          if (sss.sheetRegistered(uri,sss.AGENT_SHEET)) {
            sss.unregisterSheet(uri,sss.AGENT_SHEET);
          }
    
          sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET);
    
        };
    
       } catch(e) {} 
    
     }
    }
    
    /* if search is not hidden on current window, wait for searchbar loading and then initialize 'alternative search' (with delay) */
    if(!document.firstElementChild.hasAttribute("chromehidden") || !document.firstElementChild.getAttribute("chromehidden").includes("toolbar")) {
        if (document.readyState === "complete") {
            setTimeout(AltSearchbar.init, initialization_delay_value);
        }
        else {
            window.addEventListener("load", AltSearchbar.init, false);
        }
    }
    Alles anzeigen
    JavaScript: Multirow
    // ==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 95
    // @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") {
    
        /* Symbolleiste Sortieren */
        #titlebar { -moz-box-ordinal-group: 2; }
    
        /* Anpassung der Symbolleiste */
        :root[tabsintitlebar="true"][sizemode="maximized"] #navigator-toolbox { padding-top: 8px !important; }
        #titlebar,#tabbrowser-tabs { -moz-appearance: none !important; }
    
        /* Anpassung für Titelleistenschaltflächen */
        #nav-bar:not([inFullscreen="true"]) .titlebar-button { width: 46px !important; }
        #nav-bar[inFullscreen="true"] .titlebar-button { width: 36px !important; }
        #toolbar-menubar:not([inactive]) ~ #nav-bar:not([inFullscreen="true"]) .titlebar-buttonbox-container { display: none !important; }
    
        /* Mehrzeilige Tableiste */
        box.scrollbox-clip[orient="horizontal"] { display: block; }
        scrollbox[part][orient="horizontal"] {
            display: flex;
            flex-wrap: wrap;
            max-height: calc(calc(8px + var(--tab-min-height)) * 5); /* Anzahl der Tabzeilen(Standard = 5 Zeilen) */
            overflow-x: hidden;
            overflow-y: auto; }
        .tabbrowser-tab[fadein]:not([pinned]) { flex-grow: 1; }
        .tabbrowser-tab { overflow: hidden; }
        .tabbrowser-tab,#tabs-newtab-button { height: calc(8px + var(--tab-min-height)); }
        .tabbrowser-tab > .tab-stack { width: 100%; }
        #tabs-newtab-button { margin: 0 !important; }
    
        /* 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; }
    
        /* Ausblenden */
        .tabbrowser-tab:not([fadein]) { display: none !important; }
    
        /* --- Ziehbereich der Tab-Leiste --- */
        /* Anpassung */
        hbox.titlebar-spacer[type="pre-tabs"] { width: 0px !important; } /* Linker Ziehbereich: Standard 40px  */
        hbox.titlebar-spacer[type="post-tabs"] { width: 0px !important; } /* Rechter Ziehbereich: Standard 40px  */
        /* ↓ Wenn Sie die linke und rechte Seite des CSS-Codes auskommentieren und den CSS-Code aktivieren, 
           können Sie den Ziehbereich links einblenden, der beim Maximieren des Fensters ausgeblendet wird.  */
        /* :root:not([sizemode="normal"]) hbox.titlebar-spacer[type="pre-tabs"] { display: block !important; } */
    
        /* ↓ Wenn Sie die Auskommentierung links und rechts von unten stehenden CSS-Code entfernen und den CSS-Code aktivieren,     
             können Sie den linken und rechten Ziehbereich einblenden, der im Vollbildmodus ausgeblendet wird. */
        /* :root[inFullscreen] .titlebar-spacer { display: block !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.AGENT_SHEET);
    
        if(location.href !== 'chrome://browser/content/browser.xhtml') return;
    
        // Verschieben Sie die Menüleiste an den oberen Rand der Symbolleiste 
        document.getElementById("titlebar").parentNode.insertBefore(document.getElementById("toolbar-menubar"),document.getElementById("titlebar"));
    
        // Titelleisten Schaltflächen in die Tableiste an den Rechten Rand verschieben
        document.getElementById("nav-bar").appendChild(document.querySelector("#TabsToolbar .titlebar-buttonbox-container"));
    
        // Scroll-Buttons und Spacer in der Tab-Leiste ausblenden shadowRoot 
        gBrowser.tabContainer.arrowScrollbox.shadowRoot.getElementById('scrollbutton-up').style.display = "none";
        gBrowser.tabContainer.arrowScrollbox.shadowRoot.getElementById('scrollbutton-down').style.display = "none";
        gBrowser.tabContainer.arrowScrollbox.shadowRoot.querySelector('[part="overflow-start-indicator"]').style.display = "none";
        gBrowser.tabContainer.arrowScrollbox.shadowRoot.querySelector('[part="overflow-end-indicator"]').style.display = "none";
    
        // drag & drop & DropIndicator
    
        gBrowser.tabContainer.clearDropIndicator = function() {
          let tabs = this.allTabs;
          for (let i = 0, len = tabs.length; i < len; i++) {
            tabs[i].removeAttribute("style");
          }
        }
        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 = this._getDropIndex(event, false); // 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();
              children[newIndex - 1].style.setProperty("box-shadow","-1px 0 0 red inset,1px 0 0 red","important");
              if (RTL_UI) {
                newMargin = rect.right - tabRect.left;
              } else {
                newMargin = tabRect.right - rect.left;
              }
            } else {
           // let tabRect = children[newIndex].getBoundingClientRect();
              children[newIndex].style.setProperty("box-shadow","1px 0 0 red inset,-1px 0 0 red","important");
              if (RTL_UI) {
                newMargin = rect.right - tabRect.right;
              } else {
                newMargin = tabRect.left - rect.left;
              }
            }
          }
    
          ind.hidden = false;
          newMargin += ind.clientWidth / 2;
          if (RTL_UI) {
            newMargin *= -1;
          }
          ind.style.transform = "translate(" + Math.round(newMargin) + "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;
            }
    
            if (oldTranslateX && oldTranslateX != newTranslateX && !gReduceMotion) {
              for (let tab of movingTabs) {
                tab.setAttribute("tabdrop-samewindow", "true");
                tab.style.transform = "translateX(" + newTranslateX + "px)";
                let postTransitionCleanup = () => {
                  tab.removeAttribute("tabdrop-samewindow");
    
                  this._finishAnimateTabMove();
                  if (dropIndex !== false) {
                    gBrowser.moveTabTo(tab, dropIndex);
                    if (incrementDropIndex) {
                      dropIndex++;
                    }
                  }
    
                  gBrowser.syncThrobberAnimations(tab);
                };
                if (gReduceMotion) {
                  postTransitionCleanup();
                } else {
                  let onTransitionEnd = transitionendEvent => {
                    if (
                      transitionendEvent.propertyName != "transform" ||
                      transitionendEvent.originalTarget != tab
                    ) {
                      return;
                    }
                    tab.removeEventListener("transitionend", onTransitionEnd);
    
                    postTransitionCleanup();
                  };
                  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;
        }
    
    }
    Alles anzeigen


    €: Keine Ahnung warum auf einmal eine einzige Zeile aus jedem Skript wurde, ich hatte es per Notpad kopiert und eingefügt.

  • Alternative Suchleiste + Multirow: Darstellungsprobleme seit Fx96 (Wechselwirkung)

    • Rob
    • 21. Januar 2022 um 17:22

    Seit dem Update auf Fx 96 verursachen das Skript alternative Searchbar und Multirow Darstellungsprobleme, wenn man beide gemeinsam nutzt. Einzeln treten sie nicht auf.

    Beide Skripte verursachen bereits unverändert die Probleme (Standardmäßig hab ich den Schalter für alte Darstellung und Namen an in der Suchleiste, Multirow 04 nutze ich grundsätzlich unverändert).

    Dies äußert sich mit verrücken der Knöpfe Minimieren, Maximieren/Wiederherstellen, Schließen sobald man Maximieren/Wiederherstellen nutzt, die Menüleiste ist maximiert zu hoch und Tabs werden grundsätzlich auf ihre minimale Breite reduziert (anstatt dynamisch).

    Hin und wieder tritt der Fehler nicht auf, egal ob man Neustart mit oder ohne Skriptcache löschen nutzt. Geschätzt etwa in einem von 15 Fällen, ansonsten gibt es immer die Darstellungsprobleme.

    Danke euch fürs ansehen!

  • Nummerierte Anzeige eines Beitrags in einem Thread

    • Rob
    • 28. Juli 2021 um 20:34

    Wenn solche Fehler auftreten, ist es empfehlenswert sie im Forum der Filterlisten zu melden. Da reicht es aus, bloß einmal auszutesten welche Filterliste schuld ist und es damit zu melden.

    Die Leute sind dort super fix und passen die Filterlisten wirklich extrem schnell an, es ist bloß wichtig dass man den Cache (oder die Liste selbst) einmal löscht um eine lokale Aktualisierung zu erzwingen, die findet sonst nur alle paar Tage statt.


    Oh und ein kleiner Tipp zur allgemeinen Fehlersuche:

    Wenn sich ein Verdacht nicht bestätigt oder man keinen hat, ruhig im ersten Schritt sehr grob vorgehen (jeden Schritt wieder rückgängig machen, wenn er nicht half):

    1. (leeres) Standard-Profil von Firefox laden (bringt es keine Besserung liegt der Fehler definitiv am Firefox selbst oder der Seite)

    2. Abgesicherter Modus

    3. Alle Add-Ons deaktivieren

    4. Alle Skripte deaktivieren (Lade-Datei in den Papierkorb verschieben oder einfach umbennen)

    5. Alle CSS deaktivieren (Lade-Datei in den Papierkorb verschieben oder einfach umbennen)

    An dieser Stelle sollte eingegrenzt sein, welcher Bereich das Problem verursacht.

    Danach auch immer ruhig etwas gröber vorgehen:

    5 Add-Ons/Skripte/CSS auf einmal deaktivieren und die Seite neu laden, so kann man schnell eingrenzen was in Frage kommt.
    Ein Editor wie Notepad++ erlaubt die per Rechtsklick die Zeilenweise Auskommentierung umzuschalten, das macht es sehr bequem.

  • Alternative Suchleiste: Text beim klicken markieren

    • Rob
    • 28. Juli 2021 um 10:52

    Vielen Dank! Das hat das Problem behoben.

    Auch danke für das alternative Skript, aber am Desktop möchte ich Adress- und Suchleiste strikt getrennt halten.

  • Alternative Suchleiste: Text beim klicken markieren

    • Rob
    • 27. Juli 2021 um 19:30

    Hallo zusammen,

    ich benutze die Alternative Suchleiste von Aris in der aktuellsten Version, mit der alten Popup Funktion aktiviert (Zeile 39 auf true [var old_search_engine_selection_popup = true; // show old search engine selection popup (true) or not (false)
    ]).

    Seit Fx 89 wird leider vorhandener Text in der Suchleiste nicht mehr markiert, wenn man hinein klickt. Seid ihr vielleicht dazu in der Lage, diese Funktion wiederherzustellen? Leider sieht sich auch Aris dazu derzeit nicht in der Lage.

    Vielen Dank schon mal!

  • Datei/Neues Fenster und Hamburger Menü/Anpassen

    • Rob
    • 13. Juni 2021 um 15:19
    Zitat von Endor

    Also aussehen sollte es so:

    [...]

    Hallo Endor,

    nach dem ich dies sah, habe ich direkt die CSS aus deinem GitHub bei mir hinzugefügt, doch leider sah das Ergebnis anders aus. Ich nehme an das liegt daran, das schon länger keine Updates kamen.

    Wärst du bereit deine aktuellen CSS für die verschiedenen Menüs zu teilen? Finde sie super und bin der Meinung das man mit Icons schneller den gewünschten Eintrag sieht, als ohne.

    Vielen Dank für die Arbeit und Unterstützung.

  • Nach Profilumzug auf neuen Rechner plötzlich nicht mehr alle Änderungen in der userchrome.css aktiv

    • Rob
    • 3. Januar 2021 um 02:42

    @Offtopic

    Eine kleine Anmerkung die ich nach lesen dieses Threads doch hinzufügen will:

    Ich richte im Freundeskreis des öfteren Laptops ein und zumindest in der Vergangenheit war es so, das die 125% tatsächlich Standardeinstellung waren, ob sie es noch ist weiß ich gerade nicht. Diese Einstellung sollte sich nach erkannter Bildschirmgröße richten und war bis vor paar Jahren der Grund, warum Schriften oft unscharf aussahen und das ab Werk.

    Ich hatte diese Einstellung stets abgeschaltet und in den erweiterten Einstellungen einfach die Standardschriftgröße erhöht, falls es tatsächlich zu klein war.

    Aber dies ist keine offensichtliche Einstellung auf den ersten Klick und Windows suggeriert noch immer, dass Skalierung die erste(/beste) Wahl ist um auf kleineren Bildschirmen die Anzeige zu vergrößern. Eventuell sollte man das bei bestimmter Fehlersuche im Hinterkopf behalten.

  • Mehrzeilige Tableiste für aktuelle Firefox-Versionen

    • Rob
    • 12. Dezember 2020 um 20:39
    Zitat von diwa

    prima script - aber unterdrückt in ff: drucken --> seite einrichten --> ränder & kopf-/ fußzeilen

    LÖSUNG: inaktivierung von zeile 42: /* #alltabs-button,tabs tab:not([fadein]), */

    (übrigens ohne beeinträchtigung der funktionalität!) - gruß diwa

    Ich möchte mich an dieser Stelle für den Hinweis bedanken. Hab schon lange die Kopf- und Fußzeilen Einstellung vermisst, hatte aber zunächst angenommen, dass es durch ein Firefox Update verschwand, da man ja an der Druckfunktion zwischenzeitlich arbeitete.

    Glücklicherweise wurde ich mit der Suche direkt auf deinen Hinweis verwiesen. Danke!

    Nur mal aus Neugierde, welchen Nutzen soll dieser Schalter bringen? Ich bezweifle, dass das Entfernen von Menüs das Ziel sein sollte.

  • passwordplus.uc.js

    • Rob
    • 2. Juli 2020 um 21:16

    Es gibt wohl die Möglichkeit die alte Oberfläche wiederherzustellen. Xiaoxiaoflood hat es in seinem Repo unter Bonus hinzugefügt.

    Allerdings funktioniert es so wie es ist nur mit seiner Methode Skripte zu laden.

    Ist es möglich dieses so anzupassen, dass man sie mit der hier genutzten Methode laden kann?

  • Addonbar Skript verursacht Fehler/Ausfall in anderen Skripts

    • Rob
    • 4. Juni 2020 um 19:31
    Zitat von Speravir

    dass fast nie die Quelle angegeben wird

    Ok, beim zweiten Skript hatte ich den Link vergessen, sorry.

    Aber letztlich lag der Fehler gar nicht mal da, sondern das das alternative Addon Bar Skript nicht wirklich mit flexiblem Leerraum kompatibel bzw. stattdessen als größere fixe Leerräume behandelt.

  • Addonbar Skript verursacht Fehler/Ausfall in anderen Skripts

    • Rob
    • 4. Juni 2020 um 18:24

    Das Problem ist nun gelöst.

    Anstatt Zeile 128:

    Code
    document.addEventListener("DOMContentLoaded", AddAddonbar.init(), false);

    Wird der Code von Zeile 132-134 verwendet:

    Code
    setTimeout(function(){
      AddAddonbar.init();
    
    },2000);

    Also im Grunde Auskommentieren vertauscht.

    Eventuell ebenfalls Interessant für 2002Andreas, da dieser Code zusammen mit dem flexiblen Leerraum funktioniert und man nicht unzählige Leerräume mehr einfügen muss. Außerdem das es sich wie die obere Symbolleiste verhält, zum Beispiel bei Rechtsklick darauf, finde ich sehr angenehm.

    Ich danke euch allen auf jeden Fall für eure Mühen!

  • Addonbar Skript verursacht Fehler/Ausfall in anderen Skripts

    • Rob
    • 3. Juni 2020 um 19:08
    Zitat von Speravir

    Servicelink – die Skriptsammlung von Aris: Aris-t2/CustomJSforFx/scripts. (GitHub).

    Wie im ersten Post beschrieben, nutze ich bereits das Skript von dort, welches für (plötzliche) Konflikte sorgt.

    Falls sich jemand anschauen kann woran es liegt, wäre es großartig. Gern liefere ich weitere Informationen wenn nötig.

  • Addonbar Skript verursacht Fehler/Ausfall in anderen Skripts

    • Rob
    • 3. Juni 2020 um 17:23

    Ich danke dir auf jeden Fall für die Mühen!

  • Addonbar Skript verursacht Fehler/Ausfall in anderen Skripts

    • Rob
    • 3. Juni 2020 um 17:17

    Das ist bei dem Konflikt behafteten Skript anders. Außerdem ist ein Rechtsklick in dem anderen Skript identisch mit dem Verhalten in der oberen Symbolleiste.

    Bilder

    • space alt.jpg
      • 284,7 kB
      • 1.920 × 1.135
  • Addonbar Skript verursacht Fehler/Ausfall in anderen Skripts

    • Rob
    • 3. Juni 2020 um 17:06

    So wie ich das sehe, sind die bei dir auch nicht mehr flexibel, weshalb du mehrere Hintereinander gemacht hast. Sie sind wie erwähnt nur breiter.

    Zuvor war es ja so, dass ein flexibler Leerraum die Icons ganz links und nach ganz rechts verschiebt. Hat man einen weiteren hinzugefügt war das Symbol zwischen den beiden mittig, während alles andere ganz links bzw. rechts war.

    Jetzt hast du einfach nur soviele Leerräume hinzugefügt, dass du auf dieses Ergebnis kommst.

    Bilder

    • Space.jpg
      • 22,95 kB
      • 1.915 × 113
  • Addonbar Skript verursacht Fehler/Ausfall in anderen Skripts

    • Rob
    • 3. Juni 2020 um 16:57

    War das jetzt bloß ein Hinweis auf die Forumssuche? Das von dir rein gestellte Skript ist nämlich identisch mit meinem.

  • Addonbar Skript verursacht Fehler/Ausfall in anderen Skripts

    • Rob
    • 3. Juni 2020 um 16:45

    Ich weiß nicht ob es an dem neuen Skript oder aber an dem gerade ausgeführten Update auf Fx77 liegt, aber mein genutztes Skript für Leerraum und Trenner erzeugt keinen flexiblem Leerraum mehr, er ist bloß breiter, als der fixe Leerraum:

    CSS
    // Restore 'Space & Separator' items script for Firefox 60+ by Aris
    //
    // Default browser scripts always remove spaces and separators from default palette, so
    // because of that they are added to an own toolbar now.
    //
    // - spaces and separators can be moved to any toolbar
    // - to remove spaces or separators move them into palette
    // - configuration toolbar behaves like a default toolbar, items and buttons can be placed on it
    // - configuration toolbar is not visible outside customizing mode
    // - default "Flexible Space" item is hidden from palette and added to configuration toolbar
    // [!] BUG: do not move spaces, flexible spaces or separator to configuration toolbar or it will cause glitches
    // [!] BUG: do not move main 'space'-item to palette or it will be hidden until customizing mode gets reopened
    
    // [!] Fix for WebExtensions with own windows by 黒仪大螃蟹 (for 1-N scripts)
    
    
    Components.utils.import("resource:///modules/CustomizableUI.jsm");
    var {Services} = Components.utils.import("resource://gre/modules/Services.jsm", {});
    var appversion = parseInt(Services.appinfo.version);
    
    var AddSeparator = {
      init: function() {
          
        /* blank tab workaround */
        try {
          if(gBrowser.selectedBrowser.getAttribute('blank')) gBrowser.selectedBrowser.removeAttribute('blank');
        } catch(e) {}
          
        var tb_config_label = "Configuration Toolbar";
        var tb_spacer_label = "Space";
        var tb_sep_label = "Separator";
        var tb_spring_label = "Flexible Space";
          
        try {
         if(document.getElementById('configuration_toolbar') == null) {
            
          if(appversion <= 62) var tb_config = document.createElement("toolbar");
          else var tb_config = document.createXULElement("toolbar");
          tb_config.setAttribute("id","configuration_toolbar");
          tb_config.setAttribute("customizable","true");
          tb_config.setAttribute("class","toolbar-primary chromeclass-toolbar browser-toolbar customization-target");
          tb_config.setAttribute("mode","icons");
          tb_config.setAttribute("iconsize","small");
          tb_config.setAttribute("toolboxid","navigator-toolbox");
          tb_config.setAttribute("lockiconsize","true");
          tb_config.setAttribute("ordinal","1005");
          tb_config.setAttribute("defaultset","toolbarspacer,toolbarseparator");
          
          document.querySelector('#navigator-toolbox').appendChild(tb_config);
          
          CustomizableUI.registerArea("configuration_toolbar", {legacy: true});
          if(appversion >= 65) CustomizableUI.registerToolbarNode(tb_config);
          
          if(appversion <= 62) var tb_label = document.createElement("label");
          else var tb_label = document.createXULElement("label");
          tb_label.setAttribute("label", tb_config_label+": ");
          tb_label.setAttribute("value", tb_config_label+": ");
          tb_label.setAttribute("id","tb_config_tb_label");
          tb_label.setAttribute("removable","false");
          
          tb_config.appendChild(tb_label);
          
          
          if(appversion <= 62) var tb_spacer = document.createElement("toolbarspacer");
          else var tb_spacer = document.createXULElement("toolbarspacer");
          tb_spacer.setAttribute("id","spacer");
          tb_spacer.setAttribute("class","chromeclass-toolbar-additional");
          tb_spacer.setAttribute("customizableui-areatype","toolbar");
          tb_spacer.setAttribute("removable","false");
          tb_spacer.setAttribute("label", tb_spacer_label);
          
          tb_config.appendChild(tb_spacer);
        
          
          if(appversion <= 62) var tb_sep = document.createElement("toolbarseparator");
          else var tb_sep = document.createXULElement("toolbarseparator");
          tb_sep.setAttribute("id","separator");
          tb_sep.setAttribute("class","chromeclass-toolbar-additional");
          tb_sep.setAttribute("customizableui-areatype","toolbar");
          tb_sep.setAttribute("removable","false");
          tb_sep.setAttribute("label", tb_sep_label);
           
          tb_config.appendChild(tb_sep);
          
         
          if(appversion <= 62) var tb_spring = document.createElement("toolbarspring");
          else var tb_spring = document.createXULElement("toolbarspring");
          tb_spring.setAttribute("id","spring");
          tb_spring.setAttribute("class","chromeclass-toolbar-additional");
          tb_spring.setAttribute("customizableui-areatype","toolbar");
          tb_spring.setAttribute("removable","false");
          tb_spring.setAttribute("label", tb_spring_label);
                
          tb_config.appendChild(tb_spring);
            
          // CSS
          var sss = Components.classes["@mozilla.org/content/style-sheet-service;1"].getService(Components.interfaces.nsIStyleSheetService);
    
          var uri = Services.io.newURI("data:text/css;charset=utf-8," + encodeURIComponent('\
          \
            #configuration_toolbar { \
              -moz-appearance: none !important; \
              background-color: var(--toolbar-bgcolor); \
              background-image: var(--toolbar-bgimage); \
              background-clip: padding-box; \
              color: var(--toolbar-color, inherit); \
            } \
            #main-window:not([customizing]) #configuration_toolbar { \
              visibility: collapse; \
            }\
            #main-window[customizing] #configuration_toolbar #tb_config_tb_label { \
              font-weight: bold !important; \
            }\
            #main-window[customizing] #configuration_toolbar :-moz-any(#spacer,#separator,#spring) { \
              -moz-margin-start: 20px; \
            }\
            #main-window[customizing] #configuration_toolbar :-moz-any(#wrapper-spacer,#wrapper-separator,#wrapper-spring) .toolbarpaletteitem-label { \
              display: block !important; \
              -moz-margin-end: 20px; \
            }\
            #main-window[customizing] #wrapper-spacer #spacer { \
              margin: 2px 0 !important; \
            }\
            #main-window[customizing] #configuration_toolbar #wrapper-spring #spring { \
              margin: -1px 0 !important; \
              min-width: 80px !important; \
            }\
            #main-window[customizing] #configuration_toolbar > * { \
              padding: 10px !important; \
            }\
            #main-window[customizing] #configuration_toolbar > :-moz-any(#wrapper-spacer,#wrapper-separator,#wrapper-spring) { \
              border: 1px dotted !important; \
              -moz-margin-start: 2px !important; \
              -moz-margin-end: 2px !important; \
            }\
            #main-window[customizing] toolbarspacer { \
              border: 1px solid !important; \
            }\
            toolbar[orient="vertical"] toolbarseparator { \
              -moz-appearance: none !important; \
              border-top: 1px solid rgba(15,17,38, 0.5) !important; \
              border-bottom: 1px solid rgba(255,255,255, 0.3) !important; \
              margin: 2px 2px !important; \
              height: 1px !important; \
              width: 18px !important; \
            }\
            toolbar[orient="vertical"] toolbarspacer { \
              -moz-appearance: none !important; \
              height: 18px !important; \
              width: 18px !important; \
            }\
            #customization-palette toolbarpaletteitem[id^="wrapper-customizableui-special-spring"], \
            #customization-palette-container :-moz-any(#spring,#wrapper-spring) { \
              display: none !important; \
            }\
          \
          '), null, null);
    
          sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET);
         }
        } catch(e){}
    
      }
    
    }
    
    /* initialization delay workaround */
    document.addEventListener("DOMContentLoaded", AddSeparator.init(), false);
    /*
    setTimeout(function(){
      AddSeparator.init();
    },1000);
    */
    Alles anzeigen

Unterstütze uns!

Jährlich (2025)

101,9 %

101,9% (662,48 von 650 EUR)

Jetzt spenden
  1. Kontakt
  2. Datenschutz
  3. Impressum
Community-Software: WoltLab Suite™
Mastodon