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. BrokenHeart

Beiträge von BrokenHeart

  • Windows 11

    • BrokenHeart
    • 27. Februar 2025 um 13:17
    Zitat von Sören Hentzschel

    Windows 11 ist (nach Windows 3.1) das einzige Windows, bei dem ich noch nie einen Bluescreen gesehen habe.

    DU hast Windows 3.1 verwendet? Das kam 1992 raus und wurde schon sehr bald von Windows95 (1995) abgelöst. Hast du deinen ersten Rechner im Alter von drei bis fünf Jahren betrieben? :/

  • OpenH264-Sicherheitslücke: Schadcode über Videos im Browser

    • BrokenHeart
    • 21. Februar 2025 um 18:56
    OpenH264-Sicherheitslücke: Schadcode über Videos im Browser
    Durch eine Sicherheitslücke in Ciscos Video-Codec OpenH264 können Angreifer Schadcode einschmuggeln. Auch Firefox ist gefährdet.
    www.heise.de

    *Betrifft wohl nur Windows/Linux-Systeme, auf denen kein h264-Codec (z.B. N-Versionen) vorinstalliert ist und dieser z.B. für Web-RTC Videokommunikation benötigt wird.

    Bis zu einer Fehlerbehebung durch Mozilla kann man den Cisco-Codec erst mal deaktivieren:

    Zitat

    Im Einstellungsmenü findet sich unter "Add-ons und Themes" der Menüpunkt "Plugins". Der Klick auf "OpenH264" ermöglicht Einstellungen und zeigt die aktuell mitgelieferte Version an. Derzeit ist in Firefox 135.0.1 die OpenH264-Version 2.3.2 an Bord, aus dem Juli 2023. Durch Klick auf die drei Punkte rechts von der "OpenH264"-Überschrift können Interessierte jedoch die Option auf "Nie aktivieren" umstellen, bis eine fehlerbereinigte, nicht anfällige Bibliotheksversion für Firefox ausgeliefert wird.

  • Unterstützung von Firefox 115 wird um 6 Monate verlängert

    • BrokenHeart
    • 19. Februar 2025 um 10:56

    Danke für die Zahlen!

    Zitat von Sören Hentzschel

    Seit dem sind fünf Monate vergangen und der Anteil ist auf 9,13 Prozent zurückgegangen.

    Immerhin. Bloß frage ich mich, was diese "ZuSpätUpdater" bewogen hat, jetzt doch auf ein aktuelles OS umzusteigen? Ist es die Angst gewesen, dass die ESR115 nach den angekündigten 6 Monaten nicht mehr verlängert wird? Oft ist es einfach der gestiegene Druck und die Aussicht, keine Alternativen mehr zu haben, die viele Nutzer bewegt etwas zu ändern.

    Wenn aber dann von einem Verantwortlichen das Wort 'indefinitely' ins Spiel gebracht wird, was die Lebenszeit von ESR115 angeht, dann ist das erste Ziel nicht die Leute auf ein aktuelles OS bzw. aktuellen Firefox zu bewegen, sondern diese Nutzer nicht zu verlieren. Ich denke man sollte schon konkret und glaubhaft mit einem baldigen Ende des Supports drohen.Ja ich weiß, ein zweischneidiges Schwert.:/

  • Unterstützung von Firefox 115 wird um 6 Monate verlängert

    • BrokenHeart
    • 18. Februar 2025 um 22:37
    Zitat von milupo

    ... , dass Firefox 115 bis zum August verlängert werden soll.
    Dazu gibt es folgende Übersicht:

    Firefox ESR schedule

    Dann gibt es ab Ende Juni für ein Vierteljahr 3 ESR Versionen ^^. Sollte dann für jeden was dabei sein!

    Ewig können sie dieses Spielchen aber nicht weitertreiben. Irgendwann sind die Sourcen so weit auseinandergedriftet, dass ein Zurückportieren von Code wegen schwerwiegender Sicherheitslücken immer schwieriger wird. Ist auch die Frage, wie sich die Zahl der Noch-Win7/8 Nutzer unter den Firefox-Nutzern verändert hat. Ca. 10% waren es ja vor einem halben Jahr. Wenn dieser Wert sich nicht großartig verändert hat, dann hat es sich dieser harte Kern der OS-Update-Verweiger wohl für alle Zeiten in ihrem geliebten Sicherheitsgau-Windows gemütlich gemacht.

    Und Nutzer anderer Browser, wo die Unterstützung schon eingestellt wurde, kommen doch in erster Linie wegen ihrer alten OS-Version und nicht wegen Firefox als neue Nutzer in Frage. Also wäre eine Aufschlüsselung hilfreich, wie sich die ESR 115 Zahlen bei Alt-Firefox-Nutzern entwickelt hat und wie viele Neu-Firefox-Nutzer von anderen Browsern hinzugekommen sind.

  • Der tragische Niedergang von Firefox

    • BrokenHeart
    • 15. Februar 2025 um 23:06

    Danke :thumbup:.

    Gut gemachtes Video, welches umfassend und relativ einfach erklärt, wie sich die technologischen und wirtschaftlichen Zusammenhänge und Abhängigkeiten im "Browser-Krieg" bis heute entwickelt haben. Als Ausblick hoffe ich auch, dass Firefox zumindest als "Nischenprodukt" erhalten bleibt, indem man Googles Marktmacht mit Anti-Trust-Urteilen zu Leibe rückt, auch wenn die Gefahr besteht, dass sich das erst mal negativ auf Mozillas Einnahmen auswirken könnte...

  • userChrome.js Scripte für den Fuchs (Diskussion)

    • BrokenHeart
    • 9. Februar 2025 um 15:12
    Zitat von Endor

    Meinst Du das so:

    Genau so. :thumbup:

    Zitat von milupo

    Nein, Kommando zurück, die Zeile muss doch stehen bleiben

    Ja, war ein Fehler von mir, muss natürlich stehenbleiben, gehört ja zu CreateBtn.

  • userChrome.js Scripte für den Fuchs (Diskussion)

    • BrokenHeart
    • 9. Februar 2025 um 08:59
    Zitat von Endor

    Das wäre jetzt die deutsche Version mit BrokenHeart s Modifikation.

    Sehr gut, Danke:thumbup:.

    Ein Hinweis noch zu der übersetzten Version:

    In Zeile 78 sollte der Aufruf addCSS() entfernt werden. Bei meinem Code in #4.333 war er auskommentiert.
    Überhaupt kann die ganze Funktion addCSS (Zeile 133 bis Zeile 146) gelöscht werden, da die Werte jetzt an anderer Stelle eingetragen werden.

  • userChrome.js Scripte für den Fuchs (Diskussion)

    • BrokenHeart
    • 8. Februar 2025 um 19:43
    Zitat von milupo

    Ich habe gerade festgestellt, dass das Scrollproblem in Firefox 135 noch besteht. Im Nightly gibt es das Problem nicht mehr.

    Das Verhalten kann ich bestätigen. Wenn das Scroll-Problem in der Nightly (&Beta) nicht mehr besteht (warum auch immer), dann ist m.M. alles in Ordnung :thumbup:.

    Zitat von Endor

    Dieser Code gibt eine Mindest- Breite und Höhe an-

    Mit dem Code wird aber die aktuelle Breite und Höhe angegeben. Also jedes Popup hat dann diese Größe. Da verstehe ich die Notwendigkeit nicht, da doch die Größenangaben schon in urlobj vorhanden sind und auch von dort ausgelesen werden.
    Allerdings scheint das nicht mehr so zu funktionieren. Könnte am service.AGENT_SHEET liegen.

    Ich habe mich mit folgendem Code beholfen. Damit zeigt er alle Popups wieder mit den vorgegeben Größenangaben an.

    Dafür habe ich openPanel: function(bezeichner, e, toDo) umgeschrieben und setIFrameSize: function( _width, _height) neu hinzugefügt. Außerdem wird addCSS() dann nicht mehr benötigt.

    CSS
    // ==UserScript==
    // @name           wetterfuchsbutton.uc.js
    // @compatibility  Firefox 33. - 59
    // @include        main
    // @version        1.0.20180325
    // ==/UserScript==
    
    var wetterfuchs = {
    
        urlobj: {
            MO_Doppelklick: { url: "https://www.msn.com/de-de/wetter/heute/Neustadt-i-Sa,SN,Deutschland/we-city?iso=DE&el=z3shAPk5UPgSVQf07w2ggQ%3D%3D", width: 800, height: 800 },
            MO_Rechtsklick: { url: "http://www.wetter.net/47/Berlin", width: 850, height: 630 },
            MO_Linksklick: { url: "https://www.daswetter.com/wetter_Neustadt+in+Sachsen-Europa-Deutschland-Sachsen--1-27120.html", width: 800, height: 638 },
            MO_Mittelklick: {url:"https://www.daswetter.com/wetter_Berlin-Europa-Deutschland-Berlin--1-26301.html",width:800,height:638},
            DED_WetterAktuell: { url: "https://www.wetterkontor.de/wetter-vorhersage/deutschland/neustadt-in-sachsen", width: 625, height: 865 },
            DED_Vorhersage: { url: "https://www.wetterkontor.de/de/wetter/deutschland.asp", width: 670, height: 780 },
            DED_Pollenbelastung: { url: "https://www.wetterkontor.de/de/bio/pollenflug-erle.asp", width: 478, height: 590 },
            DED_UVIndexVorhersage: { url: "https://www.wetterkontor.de/de/bio/uv-index.asp", width: 478, height: 590 },
            DE_WetterAktuell: { url: "https://www.dwd.de/DWD/wetter/aktuell/deutschland/bilder/wx_deutschland.jpg", width: 780, height: 520 },
            DE_Vorhersage: { url: "https://www.dwd.de/DWD/wetter/wv_allg/deutschland/film/vhs_deutschland.jpg", width: 780, height: 485 },
            DE_Unwetterwarnung: { url: "http://www.unwetterzentrale.de/images/map/deutschland_index.png", width: 572, height: 572 },
            DE_RegenradarAktuell: { url: "https://www.niederschlagsradar.de/image.ashx", width: 568, height: 530 },
            DE_RegenradarPrognose: { url: "https://www.niederschlagsradar.de/images.aspx?srt=loopvorhersage&jaar=-3&regio=homepage&tijdid=&m=&d=&uhr=&mi=", width: 568, height: 530 },
            EU_AktuellVorhersage: { url: "https://www.wetterkontor.de/de/wetter/europa/", width: 680, height: 690 },
            EU_Unwetterwarnung: { url: "http://www.unwetterzentrale.de/images/map/europe_index.png", width: 572, height: 572 },
            EU_RegenradarAktuell: { url: "http://www.meteox.de/images.aspx?jaar=-3&voor=&soort=loop-bliksem&c=&n=&tijdid=20128241541", width: 570, height: 570 },
            EU_RegenradarPrognose: { url: "https://www.niederschlagsradar.de/niederschlagsprognose.aspx?type=1&continent=europa", width: 553, height: 645 },
            WE_WetterAktuell: { url: "http://www.meteocentrale.ch/de/wetter/weltwetter.html#sytl", width: 575, height: 360 },
            RE_AktuellVorhersage: { url: "https://www.wetterkontor.de/de/wetter/deutschland/sachsen.asp", width: 675, height: 640 },
            RE_Unwetterwarnung: { url: "https://www.wetterkontor.de/warnungen/warnung.asp?id=PIO", width: 850, height: 480 },
            RE_RegenradarAktuell: { url: "https://www.niederschlagsradar.de/image.ashx?type=regioloop&regio=bln&j=&m=&d=&mi=&uhr=&bliksem=0&voor=&srt=loop1stunde&tijdid=201194154", width: 568, height: 530 },
            RE_RegenradarPrognose: { url: "https://www.wetteronline.de/regenradar/berlin-bundesland?mode=interactive&wrx=52.51,13.41&wrm=8", width: 850, height: 850 },
        },
    
        wfthrobber: "https://raw.github.com/ardiman/userChrome.js/master/wetterfuchsbutton/loading51.gif",
        // alternativ z.B. wfthrobber: "chrome://global/skin/media/throbber.png"
    
        createBtn: function() {
            try {
                CustomizableUI.createWidget({
                    id: 'wetterfuchs-toolbarbutton',
                    type: 'custom',
                    onBuild: function(aDocument) {
                        var toolbaritem = aDocument.createElementNS('http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul', 'toolbarbutton');
                        var attributes = {
                            id: 'wetterfuchs-toolbarbutton',
                            class: 'chromeclass-toolbar-additional',
                            type: 'menu',
                            removable: 'true',
                            label: 'Wjedrowa liška',
                            tooltiptext: 'Lokalne a globalne wjedrowe informacije',
                             
                            style: 'list-style-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAD+0lEQVQ4jb3Tf0zUZRwH8LdgEngngitiMVBXcxH4h+lmETndkqVIOYemrewH4ipJmCjmmDLJRmrKBkPgMNYSMYNN3cQ1YoG4ovjpwQEnX+644ziP7/fbHd9z4SnH8+4PxXIWtLX13j7bsz17Xtvz+TwP8H9lfXx02NT62HJd3JHlurgHe9GhYX9/appkx+k31m0JKtEBzzdlLLz08+6FlxcAz9VtCi7JjtNv/NfQ60sXJQJA/VocutVx6I77+9fGbl/fNeG7nu53X355zNu89W5DSkA+AGyIj1o1I1i1KtQglyzn2MUk/+TNYgq1nEIuohg9TuHK56Qtg2PfxftdJ2L4zStzK6azHgOwoDNRf9Q/kEPeqiJ/MwiqZaRSQsqFpOswhSNL0PEeJ9pXsDVBd1IH3ZMA5jyiFSwOWt//2eIfTF+lyt3XjrCvrZjjN0vJsQpSOUbezCQdH5D2N0nrBk6aYun5+nHF+KmusXDJ/JRHwI7UrS9WH05TW1quUZLMorOjlacNp9j/ay7p2kmquyhGd5HOHeTwNgrLq0J0hfPGhyE9BUA0gICHwIq8vNy2tva7DoeDZrOZNTU1rK6uZl1dPc+fr+HF2uOUBw9SKPtJ18fk8FZOGqPYsy34l1Ig9iEwBogs+uLzVpPJRIvFIoxGIxsaGihJEm02G212O43dfaysrKC9L4/05JDOHRTmeKHVzOaVJH1tInRPTHmBGe9v3/NTc/P40NAQrVYrJUni4ODgPcxm4/DwMB0OBzs6Onm2qpAj/bmcdKZTmBbRtD2o80pw4MZ9gB4AkJaWFnHhwoU7qqrS6XSKkZGRB5DL5aIsy1QUhaqq0uVycWBggF1d7aLlx+OcuB4hpMwQaz6w5P4rAVJSUhJ6e3vpdrupKAplWaYkSTSZTJRlmZqm0ev10uv1UtM0jo+P0+fzcXBIFj1nEiekzBDnt0vnffKgfytXrlxWX1/v93g8dLvdtFqt7O7uFhaLhXa7nYqiUNM0appGVVXp8/mE3+/nrdvjrMrY214FJJUBkX8dSkRycvKpsrIy58VLl+5cbW6m0WgUHo+HsizT1NtLVVWpaRodIyNUVDdv+3x0jI6y8I017SeAp7OBuQBmTYEBAGL1ev27EWFhB/ZnZTkbm5rYb77BltZWGsrLRWPTVfaZB1h7tpKGL/ewsqTo992bNnXs0wfvBRD0T19vdjgQFQmkLwkPN2x+aVnbO3ExA6uB2p0vPGX7KOEZxzrgXE402rbMw7nVwOZS4NnpwKkEA4hZByRnAm/lA2tP6HHgaAgOngTW1ABJZ4AV9282awbrz2QBwQVAaCowpxiIMQCLUoE5ecD8t+/17D8l8H7NmD8Aw0h46qvM+RMAAAAASUVORK5CYII=)'
                        };
                        for (var a in attributes)
                            toolbaritem.setAttribute(a, attributes[a]);
                        appendMenupopup(toolbaritem);
    					//oncontextmenu: "return false",
    						toolbaritem.addEventListener('contextmenu', () => {
    							return false;
    						});
                         //   ondblclick: "if (event.button === 0) { wetterfuchs.openPanel(\'MO_Doppelklick\',event,\'b\')}",
    					       toolbaritem.addEventListener('dblclick', event => {
    							   if (event.button === 0) {
    								 wetterfuchs.openPanel('MO_Doppelklick',event,'b');  
    							   }
    						   })
                         //   onclick: "if (event.button === 1) {wetterfuchs.openPanel(\'MO_Mittelklick\',event,\'b\')};if (event.button === 2) {wetterfuchs.openPanel(\'MO_Rechtsklick\',event,\'b\')}",
    					      toolbaritem.addEventListener('click', event => {
    							  if (event.button === 1) {
    								  wetterfuchs.openPanel('MO_Mittelklick',event, 'b');
    							  }
    							 if (event.button === 2) {
    								 wetterfuchs.openPanel('MO_Rechtsklick', event, 'b');
    								  }
    						  });
                        return toolbaritem;
                    }
                });
                //addCss();
            } catch (e) {};
    
            function appendMenupopup(toolbaritem) {
                let mymenu = document.createXULElement('menupopup');
                mymenu.id = 'wetterfuchsmenu';
                toolbaritem.appendChild(mymenu);
    
                function appendMenu(label, id, Items) {
                    let menu = document.createXULElement('menu');
                    menu.setAttribute('label', label);
                    mymenu.appendChild(menu);
                    let menupopup = document.createXULElement('menupopup');
                    menupopup.id = id;
                    menu.appendChild(menupopup);
                    for (let item of Items) {
                        let menuitem = document.createXULElement('menuitem');
                        menuitem.setAttribute('label', item[0]);
                        //menuitem.setAttribute('oncommand', item[1]);
    					menuitem.addEventListener('click', function (event) {
    						Function (item[1]) ();						
    					});
                        menupopup.appendChild(menuitem);
                    };
                };
                appendMenu("Wjedrowe daty Němska", "wetterfuchsdatamenu", [
                    ["Aktualne wjedro", "wetterfuchs.openPanel(\'DED_WetterAktuell\',event,\'p\')"],
                    ["Předpowědź", "wetterfuchs.openPanel(\'DED_Vorhersage\',event,\'p\')"],
                    ["Próškowe poćeženje", "wetterfuchs.openPanel(\'DED_Pollenbelastung\',event,\'p\')"],
                    ["UV-indeks", "wetterfuchs.openPanel(\'DED_UVIndexVorhersage\',event,\'p\')"]
                ]);
                appendMenu("Wjedrowe karty Němska", "wetterfuchsDEmapsmenu", [
                    ["Aktualne wjedro", "wetterfuchs.openPanel(\'DE_WetterAktuell\',event,\'p\')"],
                    ["Předpowědź", "wetterfuchs.openPanel(\'DE_Vorhersage\',event,\'p\')"],
                    ["Njewjedrowe warnowanje", "wetterfuchs.openPanel(\'DE_Unwetterwarnung\',event,\'p\')"],
                    ["Dešćowy radar aktualny", "wetterfuchs.openPanel(\'DE_RegenradarAktuell\',event,\'p\')"],
                    ["Prognoza dešćoweho radara", "wetterfuchs.openPanel(\'DE_RegenradarPrognose\',event,\'p\')"]
                ]);
                appendMenu("Wjedro EU", "wetterfuchsEUmapsmenu", [
                    ["Aktualne a předpowědź", "wetterfuchs.openPanel(\'EU_AktuellVorhersage\',event,\'p\')"],
                    ["Njewjedrowe warnowanje", "wetterfuchs.openPanel(\'EU_Unwetterwarnung\',event,\'p\')"],
                    ["Dešćowy radar aktualny", "wetterfuchs.openPanel(\'EU_RegenradarAktuell\',event,\'p\')"],
                    ["Prognoza dešćoweho radara", "wetterfuchs.openPanel(\'EU_RegenradarPrognose\',event,\'p\')"]
                ]);
                appendMenu("Wjedro swěta", "wetterfuchsWEmapsmenu", [
                    ["Aktualne a předpowědź", "wetterfuchs.openPanel(\'WE_WetterAktuell\',event,\'p\')"]
                ]);
                appendMenu("Regionalne wjedro", "wetterfuchsRegiomapsmenu", [
                    ["Aktualne a předpowědź", "wetterfuchs.openPanel(\'RE_AktuellVorhersage\',event,\'p\')"],
                    ["Njewjedrowe warnowanje", "wetterfuchs.openPanel(\'RE_Unwetterwarnung\',event,\'p\')"],
                    ["Dešćowy radar aktualny", "wetterfuchs.openPanel(\'RE_RegenradarAktuell\',event,\'p\')"],
                    ["Prognoza dešćoweho radara", "wetterfuchs.openPanel(\'RE_RegenradarPrognose\',event,\'p\')"]
                ]);
            };
    
            function addCss() {
            
    			var cssIn =`
    				#wetterfuchs-panel vbox {
    					width: 1640px !important;
    					height: 800px !important;
    				}
    			`;
    			
    			service = Cc['@mozilla.org/content/style-sheet-service;1'].getService(Ci.nsIStyleSheetService);
    			uri = makeURI('data:text/css;charset=UTF=8,' + encodeURIComponent(cssIn));
    			service.loadAndRegisterSheet(uri, service.AGENT_SHEET);
    		}
        },
    
        init: function() {
            this.createBtn();
            let panel = document.createXULElement('panel');
            panel.id = "wetterfuchs-panel";
            panel.setAttribute('noautohide', "false");
            panel.setAttribute('type', "arrow");
           // panel.setAttribute('onpopuphiding', "wetterfuchs.clearPanel()");
    	   panel.addEventListener('popuphiding', () => {
    			wetterfuchs.clearPanel();
    	});
            //panel.setAttribute('onmousedown', "if (event.button == 1) wetterfuchs.openUrlFromPanel()");
    		panel.addEventListener('mousedown', event => {
    			if (event.button == 1) {
    				wetterfuchs.openUrlFromPanel();
    			}			
    	});
            let element = document.getElementById('mainPopupSet').appendChild(panel);
            let vbox = document.createXULElement('vbox');
            panel.appendChild(vbox);
            let browser = document.createXULElement('browser');
            browser.id = "wetterfuchs-iframe";
            browser.setAttribute('type', 'content');
            browser.setAttribute('flex', '1');
            browser.setAttribute('remote', 'true');
            browser.setAttribute('src', this.wfthrobber);
            vbox.appendChild(browser);
        },
    
        myEventhandler: function(e, toDo) {
            switch (toDo) {
                case "p":
                    e.preventDefault();
                    break;
                case "s":
                    e.stopPropagation();
                    break;
                case "b":
                    e.preventDefault();
                    e.stopPropagation();
                    break;
            }
        },
    
        clearPanel: function() {
            var myiframe = document.getElementById("wetterfuchs-iframe");
            myiframe.parentNode.width = 146;
            myiframe.parentNode.height = 146;
            myiframe.setAttribute("src", this.wfthrobber);
        },
    
        openUrlFromPanel: function() {
            openWebLinkIn(document.getElementById("wetterfuchs-iframe").getAttribute("src"), "tab");
            document.getElementById("wetterfuchs-panel").hidePopup();
        },
    	
        openPanel: function(bezeichner, e, toDo) {
            this.myEventhandler(e, toDo);
            var mymenu = document.getElementById("wetterfuchsmenu");
            if (mymenu.state === "open" && e.button !== 0) return;
            mymenu.hidePopup();
            var myiframe = document.getElementById("wetterfuchs-iframe");
    
    		this.setIFrameSize(this.urlobj[bezeichner]["width"], this.urlobj[bezeichner]["height"]);
    
            myiframe.setAttribute("src", this.urlobj[bezeichner]["url"]);
            var mypanel = document.getElementById("wetterfuchs-panel");
            mypanel.openPopup(document.getElementById("wetterfuchs-toolbarbutton"));
        },
    	
    	setIFrameSize: function( _width, _height) {
    		var cssIn =`
    			#wetterfuchs-panel vbox {
    				width: 	${_width}px !important;
    				height: ${_height}px !important;
    			}
    		`;
    		service = Cc['@mozilla.org/content/style-sheet-service;1'].getService(Ci.nsIStyleSheetService);
    		uri = makeURI('data:text/css;charset=UTF=8,' + encodeURIComponent(cssIn));
    		service.loadAndRegisterSheet(uri, service.AGENT_SHEET);	
    	}
    
    };
    
    if (location == 'chrome://browser/content/browser.xhtml')
        wetterfuchs.init();
    Alles anzeigen


    Zitat von Endor

    Frage verwendest Du auch die dazu gehörende Css Datei?

    Nein. Aber habe ich jetzt nachgeholt und die aktuelle CSS-Datei von deiner Seite über die 'userChrome.css' eingebunden. Sehe allerdings überhaupt kein Unterschied zu dem Skript ohne CSS. Was macht die CSS-Datei? :/

  • userChrome.js Scripte für den Fuchs (Diskussion)

    • BrokenHeart
    • 8. Februar 2025 um 17:15
    Zitat von Endor

    custom_scrollbars.uc.js

    Danke! Gleich mal ausprobieren...

    Edit: Damit geht es leider auch nicht :/...

    Video:

  • userChrome.js Scripte für den Fuchs (Diskussion)

    • BrokenHeart
    • 8. Februar 2025 um 17:09
    Zitat von milupo

    Mir geht es hier aber wie dem Eichhörnchen, das sich mühsam ernährt.

    Ich denke, Sachen die man sich "mühsam" angeeignet hat, haben oft eine höhere Halbwertszeit und sind nachhaltiger.

    OT: Ich lege für diese kleinen Geschöpfe eigentlich immer ein paar Nüsse aus, da ich diese Tiere faszinierend finde und meine helle Freude habe, wenn sie hier halsbrecherisch von Baum zu Baum springen.

    Zitat von milupo

    Genau weiß ich das nicht, ich verwende nämlich das Skript custom_scrollbars.uc.js und damit habe ich kein Problem mehr.

    Kannst du das Skript bitte mal posten. Vielleicht kann man darüber auch eine allgemeine Lösung für das Scrollproblem ableiten.

    Zitat von milupo

    Der kleine Maulwurf würde sagen: „Ach jaaa“. :)

    Mir hat mal ein Tscheche vor Ewigkeiten fast Schläge angedroht, weil ich fälschlicherweise behauptet hatte, dass das eine wunderschöne polnische Zeichentrickserie ist. ^^

  • userChrome.js Scripte für den Fuchs (Diskussion)

    • BrokenHeart
    • 8. Februar 2025 um 16:39
    Zitat von milupo

    Probiert mal diese Version:

    Sehr gut gemacht milupo :thumbup:.

    Ich hatte es ja schon mal gesagt, bleib bei den Skripten. Hier wird jeder Mann und jede Frau (aka Mira_Belle ;)) gebraucht, nachdem aborix im Forum eine große Lücke hinterlassen hat :(.

    PS: Was bei mir nicht funktionieren mag, ist das Scrollen. Ist das bei euch auch so?

  • userChrome.js Scripte für den Fuchs (Diskussion)

    • BrokenHeart
    • 7. Februar 2025 um 19:51

    2002Andreas , milupo , Endor

    :) Hört sich gut an, aber mal schauen, ob es wirklich stabil läuft. Ich lasse es mal die nächste Zeit bei mir in der Navbar.

    Zitat von Mitleser

    Auch mit dem 'Neuen' ist es leider so (FF135), aber egal ich nutze das Script nicht..

    "Spielverderber" ;).

    Aber ernsthaft: Hast du mal den Script-Cache gelöscht? Du könntest vielleicht auch noch mit setTimeout() beim uhr.init() experimentieren:

    JavaScript
    setTimeout(function() {
        uhr.init();
     },1000);
  • userChrome.js Scripte für den Fuchs (Diskussion)

    • BrokenHeart
    • 7. Februar 2025 um 19:26

    Habe jetzt den EventListener rausgeschmissen, der (angeblich) feuert, wenn der Objektbaum(DOM) geladen wurde und init() direkt aufgerufen. Bei mir funktioniert es so, was aber nicht unbedingt was heißen muss:

    JavaScript
    // ==UserScript==
    // @name           uhr-panelbutton.uc.js
    // @compatibility  Firefox 134
    // @include        main
    // @version        1.0.1
    // ==/UserScript==
    
    (function() {
    	if (!window.gBrowser)
    		return;
    
    	var uhr = {
    	  urlobj: {
    		MO_Linksklick: {url:"https://uhr.ptb.de/",width:500,height:500},
    	  },
    	  wfthrobber: "https://raw.github.com/ardiman/userChrome.js/master/wetterfuchsbutton/loading51.gif",  // alternativ z.B. wfthrobber: "chrome://global/skin/media/throbber.png",
    	  createBtn: function() {
    	   try {
    		  CustomizableUI.createWidget({
    			 id: 'uhr-toolbarbutton',
    			 type: 'custom',
    			 onBuild: function(aDocument) {
    				var toolbaritem = aDocument.createElementNS('http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul', 'toolbarbutton');
    				var attributes = {
    				   id: 'uhr-toolbarbutton',
    				   class: 'toolbarbutton-1 chromeclass-toolbar-additional',
    				   type: 'button',
    				   removable: 'true',
    				   label: 'Uhr Panel',
    				   tooltiptext: 'Aktuelle Uhrzeit',
    				   style: 'list-style-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACrklEQVQ4jX2T3UuTURzHn3+j/6ILrwq88cLoJgpiEYQUwcKErKAXWi+E1dIZrTRQWQQzYZqilWvGpPmyC3OMtnQ02gvao/Lsxbk9e9phY+fTxRNLM/rCFw6ccz7n+4XfUZS/tLL6HdvjN7Ra3TRbPTRbPbS09dM3MIymafx9viEhBLbHbzhxaxanb5OJcJGJcJG30RIjSzq2MZVWq5vXI6P7IUII2i45uTys4lrIM/dth4RWYTltkM4IYhsVxkN5XixUaLkZotc5tBdyu6ufs4NbjCzpLKcNvqxXWCtKUgXTyZIkGC/R517BMVukqSOA1ztDo/Ohdi/dvhz+uEEsK4llJdG8ZLVgruM7kicDIUanE3yIGXSMFDhs6cEwDBqvT0dLBFMV4r8vJpcjJJcjpISkz72CyxMjWZL44wbdvhwHTn0yU7S09XNnKrc3tpDkwmHks+uMTid45oqQLEmiGcmSWmcqatBkW+N2Vz/KwdOveOjViKzpaLpE3akR+pZn2p+i/doEJ6/Os5apouoSVZckcjX8X7c59jzH+U67Cej25cjrVURNEk8VcDjmeOla4t5gjPfjQapSUq6a1kWdhFbBMlgwAZb2R1weVsnuCKSU1OsSKXc5PIvM/GjsiZpkdV3niEPlvv0pSt/AMMd7V5kJbTUge1zImJDfgI1sGddCnqaOAIFAAEXTNFo7BrGNqWxky/sBu1KImiSSLnNhtMKxc/cQQpiz4BmbwNITxOnbJLX1E13U96XIffpAJF3GPi9ptnpYXFzcO429ziEsPUEeejX8X7dJbf1kZb1COiP4rlWZnEtjn5ccvT7+7/+gKIoyOfWOM1eecHEohNO3iftzFffnKo7ZIheHQljaH5m9/yfDMJicesfdrl46bzyg88YD7tufMjPz8U/nXfoFmxjSB7qU4KIAAAAASUVORK5CYII=)'
    				};
    				for (var p in attributes)
    						toolbaritem.setAttribute(p, attributes[p]);
    					
    				toolbaritem.addEventListener('click', event => {
    					if (event.button == 0) { 
    							uhr.openPanel( 'MO_Linksklick', event, 'b' );
    					}
    				});
    				
    				return toolbaritem;
    			 }
    		  });
    	   } catch(e) { };
    	   
    	   var css = '\
    		  #uhr-toolbarbutton .toolbarbutton-icon {max-width: none !important;}\
    	   ';
    		   
    	   var stylesheet = document.createProcessingInstruction('xml-stylesheet', 'type="text/css" href="data:text/css;utf-8,' + encodeURIComponent(css) + '"');
    
    	   document.insertBefore(stylesheet, document.documentElement);
    	   },
    	  init: function() {
    		
    		this.createBtn();
    
    		let panel = document.createXULElement('panel');  
    		panel.id = "uhr-panel";
    		panel.setAttribute('noautohide', "false"); 
    		panel.setAttribute('type', "arrow"); 
    		
    		panel.addEventListener('popuphiding', event => {
    			 uhr.clearPanel();
    		});
    		  
    		panel.addEventListener('mousedown', event => {
    			if (event.button == 1)  
    				 uhr.openUrlFromPanel();
    		});
    		
    		let element = document.getElementById('mainPopupSet');
    	
    		console.log("--------------------------mainPopupSet: " + element);	
    		if(element)	
    			element.appendChild(panel);	
    			
    		let vbox = document.createXULElement('vbox');    
    		panel.appendChild(vbox);
    		
    		let browser = document.createXULElement('browser');  
    		browser.id = "uhr-iframe";
    		browser.setAttribute('type', 'content');     
    		browser.setAttribute('flex', '1'); 
    		browser.setAttribute('remote', 'true');
    		browser.setAttribute('src', this.wfthrobber); 
    		vbox.appendChild(browser);
    		
    	  },
    	  myEventhandler: function (e,toDo) {
    		switch (toDo) {
    		 case "p":
    		  e.preventDefault();
    		  break;
    		 case "s":
    		  e.stopPropagation();
    		  break;
    		 case "b":
    		  e.preventDefault();
    		  e.stopPropagation();
    		  break;
    		}
    	  },
    	  clearPanel: function() {
    		myiframe = document.getElementById("uhr-iframe");
    		myiframe.parentNode.width = 146;
    		myiframe.parentNode.height = 146;
    		myiframe.setAttribute("src",this.wfthrobber);
    	  },
    	  openUrlFromPanel: function() {
    		openWebLinkIn(document.getElementById("uhr-iframe").getAttribute("src"),"tab");
    		document.getElementById("uhr-panel").hidePopup();
    	  },
    	  openPanel: function(bezeichner,e,toDo) {
    		this.myEventhandler(e,toDo);
    		var myiframe = document.getElementById("uhr-iframe");
    		myiframe.parentNode.style.width = this.urlobj[bezeichner]["width"]+'px';
    		myiframe.parentNode.style.height = this.urlobj[bezeichner]["height"]+'px';
    		myiframe.setAttribute("src",this.urlobj[bezeichner]["url"]);
    		var mypanel = document.getElementById("uhr-panel");
    		mypanel.openPopup(document.getElementById("uhr-toolbarbutton"));
    	  },
    	};
    
    uhr.init();	
    
    })();
    Alles anzeigen
  • userChrome.js Scripte für den Fuchs (Diskussion)

    • BrokenHeart
    • 7. Februar 2025 um 19:08
    Zitat von milupo

    Erst sah es so aus, als ob das Symbol nicht geladen wird, aber jetzt ist es wieder da.

    Ist hier zumindest in der Nightly genauso. Erst ging es nicht und jetzt nach dem Update funktioniert es wieder. :/

    Der wahrscheinlichste Grund sind wohl wirklich Timing Probleme. Aber so krass habe ich das auch noch nicht erlebt. Was das Testen und Fehlerfinden natürlich erheblich erschwert.

    Zitat von Mitleser

    Das sieht für mich so aus als würde ein anderes Script dazwischengrätschen, das manchmal früher oder eben später startet; vielleicht dieses ähnlich programmierte Wetter-Script?

    2002Andreas hast es vor ein paar Stunden schon in einem ganz neuen Profil getestet

    Beitrag

    RE: userChrome.js Scripte für den Fuchs (Diskussion)

    […]

    Gerne doch;)

    […]

    Neues Profil, nur dieses Skript vorhanden ergibt in Fx 135:



    Vom Icon nichts zu sehen.


    So in der Beta:

    2002Andreas
    7. Februar 2025 um 14:49

    Auch da lief es nicht.

    Was mich so irritiert ist, dass es in dem gleichen Profil einmal geht und dann wieder nicht. Und anscheinend ist das eher die Regel, als die Ausnahme...


    Einen kurzen Test hätte ich noch:

    - In einem Firefox, bei dem es trotz mehrmaliger Neustarts nicht funktioniert, die Konsole öffnen.

    - Firefox neu starten ohne das Konsolenfenster vorher zu schließen, damit es sofort wieder beim Start angezeigt wird.

    Zeigt er dann das Icon an?

  • userChrome.js Scripte für den Fuchs (Diskussion)

    • BrokenHeart
    • 7. Februar 2025 um 16:46
    Zitat von 2002Andreas

    Wobei...als Rentner brauche ich eh kaum mal eine Uhr :)

    :thumbup: Das kann ich dann in knapp einem Jahr selber überprüfen 🧐


    Zitat von milupo

    Ich habe es bisher nicht genutzt und weiß noch nicht, ob ich es nutzen werde, aber nun ist es erst einmal auf dem Tisch und ich denke, wir sollten versuchen, dass es wieder funktioniert.

    Bin der gleichen Meinung! Wobei mich das fertige Skript auch nicht sonderlich reizt. Für mich ist die Hauptmotivation ehrlich gesagt, meine Firefox/JavaScript-Kenntnisse zu vertiefen bzw. zu erweitern. Also das übliche "Der Weg ist das..."-Gequatsche...;)

  • userChrome.js Scripte für den Fuchs (Diskussion)

    • BrokenHeart
    • 7. Februar 2025 um 16:26
    Zitat von 2002Andreas

    Kann man das dann nicht einfach in einem kleineren Popup öffnen lassen statt in einem Tab?

    Klar kann man das so machen. Inhaltlich ist da jetzt kein Unterschied zur Panel-Version. Aber Intention des Autors war es eben, die Uhr in einem Panel temporär anzuzeigen. Spart einem das Schließen (bzw. 'Seite zurückgehen') des geöffneten Tabs. Eine Uhr will man ja meist nicht dauerhaft betrachten. Aber ich würde dieses Panel-Uhr-Skript (selbst wenn es richtig funktionieren würde;)) auch nicht verwenden. Auch wenn es die Atomuhr aus Braunschweig (oder doch Berlin?) ist, so genau brauch ich es dann doch nicht. :) Mir reicht meine sekundengenaue Uhr in der Menü-Bar!

  • userChrome.js Scripte für den Fuchs (Diskussion)

    • BrokenHeart
    • 7. Februar 2025 um 15:45

    2002Andreas Danke! Das hilft weiter. Anscheinend hängt er schon bei der Button-Erzeugung (oder davor) . Außerdem kann ich das Problem jetzt auch in meiner Nightly nachvollziehen, was dann die Testerei doch wesentlich einfacher macht.

    milupo Das sollte - so Gott will - egal sein. Wollte den Funktionsaufruf nur einmal drin haben.

    Zitat von milupo

    da stand dort in der Browserkonsole null.

    Das war ja auch das Hauptproblem, dass das MainPopupSet-Element eben nicht immer vom Skript aus aufrufbar war, egal an welcher Stelle. Von der Konsole aus konnte man immer darauf zugreifen. Etwas, was ich bis jetzt immer noch nicht ganz verstehe...

    Falls noch Interesse an dem Skript besteht, würde ich vielleicht hier eine Version posten, die mit sehr vielen Log-Aufrufen den Ablauf sichtbar macht Mit dem Debugger wird es nämlich schwer, weil sich damit kaum Timing-Probleme ermitteln lassen und außerdem wird der Debugger zu spät aufgerufen und die Initialisierung ist schon längst abgeschlossen.

  • userChrome.js Scripte für den Fuchs (Diskussion)

    • BrokenHeart
    • 7. Februar 2025 um 14:45

    Es scheint dann doch wieder einmal Timing-Probleme zu geben. Da muss wohl ein anderer Ansatz (Observer?) her, der das Vorhandensein bestimmter Elemente "garantiert".

    Zitat von 2002Andreas

    Fx 135...nichts zu sehen:

    Danke 2002Andreas , dass du es jetzt auch mal getestet hast :thumbup:.

    In der Konsole sollte zumindest ein Log-Eintrag vorhanden sein. Wäre hilfreich, wenn du mir sagst, ob da das XUlElement steht oder null.

    Code
    --------------------------mainPopupSet: [object XULElement]
  • userChrome.js Scripte für den Fuchs (Diskussion)

    • BrokenHeart
    • 7. Februar 2025 um 12:19
    Zitat von Endor

    Schaltfläche war mal kurz da und seit dem nicht mehr aufgetaucht.

    Zitat von milupo

    Auch ich hatte nichts geändert, bis das Problem auftauchte.

    Ich hatte wie gesagt nichts geändert. :/

    Hier exakt die Version, die bei mir seit Anfang an funktioniert - nur falls es doch Abweichungen zur oben geposteten Version gibt.

    JavaScript
    // ==UserScript==
    // @name           uhr-panelbutton.uc.js
    // @compatibility  Firefox 134
    // @include        main
    // @version        1.0.1
    // ==/UserScript==
    
    (function() {
    	//let mainPopupSet; 
    
    	if (!window.gBrowser)
    		return;
    
    	window.addEventListener(
    		"DOMContentLoaded",
    		() => {
    			setTimeout(function() {
    			uhr.init();
    		},0);
    	},true);
    
    	var uhr = {
    	  urlobj: {
    		MO_Linksklick: {url:"https://uhr.ptb.de/",width:500,height:500},
    	  },
    	  wfthrobber: "https://raw.github.com/ardiman/userChrome.js/master/wetterfuchsbutton/loading51.gif",  // alternativ z.B. wfthrobber: "chrome://global/skin/media/throbber.png",
    	  createBtn: function() {
    	   try {
    		  CustomizableUI.createWidget({
    			 id: 'uhr-toolbarbutton',
    			 type: 'custom',
    			 onBuild: function(aDocument) {
    				var toolbaritem = aDocument.createElementNS('http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul', 'toolbarbutton');
    				var attributes = {
    				   id: 'uhr-toolbarbutton',
    				   class: 'toolbarbutton-1 chromeclass-toolbar-additional',
    				   type: 'button',
    				   removable: 'true',
    				   label: 'Uhr Panel',
    				   tooltiptext: 'Aktuelle Uhrzeit',
    				   style: 'list-style-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACrklEQVQ4jX2T3UuTURzHn3+j/6ILrwq88cLoJgpiEYQUwcKErKAXWi+E1dIZrTRQWQQzYZqilWvGpPmyC3OMtnQ02gvao/Lsxbk9e9phY+fTxRNLM/rCFw6ccz7n+4XfUZS/tLL6HdvjN7Ra3TRbPTRbPbS09dM3MIymafx9viEhBLbHbzhxaxanb5OJcJGJcJG30RIjSzq2MZVWq5vXI6P7IUII2i45uTys4lrIM/dth4RWYTltkM4IYhsVxkN5XixUaLkZotc5tBdyu6ufs4NbjCzpLKcNvqxXWCtKUgXTyZIkGC/R517BMVukqSOA1ztDo/Ohdi/dvhz+uEEsK4llJdG8ZLVgruM7kicDIUanE3yIGXSMFDhs6cEwDBqvT0dLBFMV4r8vJpcjJJcjpISkz72CyxMjWZL44wbdvhwHTn0yU7S09XNnKrc3tpDkwmHks+uMTid45oqQLEmiGcmSWmcqatBkW+N2Vz/KwdOveOjViKzpaLpE3akR+pZn2p+i/doEJ6/Os5apouoSVZckcjX8X7c59jzH+U67Cej25cjrVURNEk8VcDjmeOla4t5gjPfjQapSUq6a1kWdhFbBMlgwAZb2R1weVsnuCKSU1OsSKXc5PIvM/GjsiZpkdV3niEPlvv0pSt/AMMd7V5kJbTUge1zImJDfgI1sGddCnqaOAIFAAEXTNFo7BrGNqWxky/sBu1KImiSSLnNhtMKxc/cQQpiz4BmbwNITxOnbJLX1E13U96XIffpAJF3GPi9ptnpYXFzcO429ziEsPUEeejX8X7dJbf1kZb1COiP4rlWZnEtjn5ccvT7+7/+gKIoyOfWOM1eecHEohNO3iftzFffnKo7ZIheHQljaH5m9/yfDMJicesfdrl46bzyg88YD7tufMjPz8U/nXfoFmxjSB7qU4KIAAAAASUVORK5CYII=)'
    				};
    				for (var p in attributes)
    						toolbaritem.setAttribute(p, attributes[p]);
    					
    				toolbaritem.addEventListener('click', event => {
    					if (event.button == 0) { 
    							uhr.openPanel( 'MO_Linksklick', event, 'b' );
    					}
    				});
    				
    				return toolbaritem;
    			 }
    		  });
    	   } catch(e) { };
    	   
    	   var css = '\
    		  #uhr-toolbarbutton .toolbarbutton-icon {max-width: none !important;}\
    	   ';
    		   
    	   var stylesheet = document.createProcessingInstruction('xml-stylesheet', 'type="text/css" href="data:text/css;utf-8,' + encodeURIComponent(css) + '"');
    
    	   document.insertBefore(stylesheet, document.documentElement);
    	   },
    	  init: function() {
    		
    		this.createBtn();
    
    		let panel = document.createXULElement('panel');  
    		panel.id = "uhr-panel";
    		panel.setAttribute('noautohide', "false"); 
    		panel.setAttribute('type', "arrow"); 
    		
    		panel.addEventListener('popuphiding', event => {
    			 uhr.clearPanel();
    		});
    		  
    		panel.addEventListener('mousedown', event => {
    			if (event.button == 1)  
    				 uhr.openUrlFromPanel();
    		});
    		
    		let element = document.getElementById('mainPopupSet');
    	
    		console.log("--------------------------mainPopupSet: " + element);	
    		if(element)	
    			element.appendChild(panel);	
    			
    		let vbox = document.createXULElement('vbox');    
    		panel.appendChild(vbox);
    		
    		let browser = document.createXULElement('browser');  
    		browser.id = "uhr-iframe";
    		browser.setAttribute('type', 'content');     
    		browser.setAttribute('flex', '1'); 
    		browser.setAttribute('remote', 'true');
    		browser.setAttribute('src', this.wfthrobber); 
    		vbox.appendChild(browser);
    		
    	  },
    	  myEventhandler: function (e,toDo) {
    		switch (toDo) {
    		 case "p":
    		  e.preventDefault();
    		  break;
    		 case "s":
    		  e.stopPropagation();
    		  break;
    		 case "b":
    		  e.preventDefault();
    		  e.stopPropagation();
    		  break;
    		}
    	  },
    	  clearPanel: function() {
    		myiframe = document.getElementById("uhr-iframe");
    		myiframe.parentNode.width = 146;
    		myiframe.parentNode.height = 146;
    		myiframe.setAttribute("src",this.wfthrobber);
    	  },
    	  openUrlFromPanel: function() {
    		openWebLinkIn(document.getElementById("uhr-iframe").getAttribute("src"),"tab");
    		document.getElementById("uhr-panel").hidePopup();
    	  },
    	  openPanel: function(bezeichner,e,toDo) {
    		this.myEventhandler(e,toDo);
    		var myiframe = document.getElementById("uhr-iframe");
    		myiframe.parentNode.style.width = this.urlobj[bezeichner]["width"]+'px';
    		myiframe.parentNode.style.height = this.urlobj[bezeichner]["height"]+'px';
    		myiframe.setAttribute("src",this.urlobj[bezeichner]["url"]);
    		var mypanel = document.getElementById("uhr-panel");
    		mypanel.openPopup(document.getElementById("uhr-toolbarbutton"));
    	  },
    	};
    
    })();
    Alles anzeigen
    Zitat von milupo

    Eine Idee: Du hattest ja den Vorschlag mit dem setTimeout-Wert gemacht. Wenn ich so in die Vergangenheit zurückdenke, ist mir, als hätte der setTimeout-Block immer am Ende eines Skripts gestanden. Bei dir steht er am Anfang des Skriptes. Könnte das die Ursache sein?

    Der Code wurde auch vorher, obwohl er ganz hinten stand, als erstes aufgerufen. Vorher steht ja nur eine Objektdefinition 'uhr'. Der Aufruf über uhr.init() startet ja erst die eigentliche Initialisierung des Programms.

    Habe heute nur sporadisch Zeit und werde nur kurz mal immer wieder vorbeischauen...

  • userChrome.js Scripte für den Fuchs (Diskussion)

    • BrokenHeart
    • 7. Februar 2025 um 00:10
    Zitat von milupo

    Hilft nichts.

    Aber es hat doch schon funktioniert, oder? Ich habe am Skript nichts mehr geändert, ein FF-Update hat es in der Zwischenzeit auch nicht gegeben, also müsste der Fehler dann wohl eher wegen einer Änderung an deiner Umgebung auftreten. Vielleicht meldet sich ja (morgen) noch jemand und kann das Problem bestätigen oder eben nicht. :/

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