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

Beiträge von Speravir

  • proton, css in welche Datei

    • Speravir
    • 11. April 2021 um 19:31

    Nur zur Klarstellung, damit es niemand missversteht:

    Zitat von .DeJaVu

    Webseiten werden hier ausschliesslich mit Stylus behandelt.

    Das funktioniert nicht mit den about:-Seiten, und, nicht zu vergessen, auch nicht mit den Seiten von Addons (moz-extension:).

  • Adressleiste per CSS entsprechend Sicherheitsstatus einfärben

    • Speravir
    • 7. April 2021 um 20:10

    Änderung 07.04.2021: Aktualisierung für Firefox 87 – file://- und chrome://-Adressen werden als lokale Ressource erkannt, ebenso viele about:-Seiten, die zuvor als unbekannte Identität eingestuft worden waren (was ich, anscheinend nicht ganz zu Unrecht, für einen Bug gehalten habe).

  • Url-Bar farbiger Balken beim laden.

    • Speravir
    • 29. März 2021 um 18:46
    Zitat von ralf-andre

    das Script funktioniert erst, wenn ich den Javascript-Chache lösche

    Ich weiß nicht, ob das noch etwas bewirkt, ich hab es seit Urzeiten in meiner userChrome.js (also die Datei im Profil-Chrome-Verzeichnis):

    JavaScript
    // Scriptcache deaktivieren
    userChrome.ignoreCache = true;

    Du kannst ja mal testen, ob es bei dir hilft.

  • Firefox 57 - (besuchte Links in Rot anzeigen)

    • Speravir
    • 29. März 2021 um 18:20
    Zitat von Sören Hentzschel

    Das tut mir leid, wenn du ein Problem damit hast, wie ich meine Frage formuliert habe, aber es war eine legitime Frage, woher diese Annahme stammt.

    OK.

  • Firefox 57 - (besuchte Links in Rot anzeigen)

    • Speravir
    • 27. März 2021 um 20:39
    Zitat von Sören Hentzschel

    Wie kommst du darauf, dass Link Prefetching dafür sorgen würde, dass ein nicht besuchter Link als besucht markiert wird? :/ Das stimmt definitiv nicht und würde auch keinen Sinn ergeben.

    Ja, dann lag ich eben falsch und du hast es richtig gestellt.

    (Der vorwurfsvolle Stil Deiner Frage gefällt mir gar nicht.)

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

    • Speravir
    • 27. März 2021 um 02:58
    Zitat von ralf-andre

    Habe ein js-script gefunden

    Zitat von ralf-andre

    Habe ein weiteres js-script gefunden

    Einerseits: Nett, dass Du auf Funde hinweist, aber andererseits: Wäre es nicht einfacher, direkt auf https://github1s.com/aminomancer/uc…b/master/script und eventuell sogar die Originalseite https://github.com/aminomancer/uc.css.js zu verlinken? Dann könnten sich andere auch (leichter) die weiteren Skripte ansehen.

    Zitat von ralf-andre

    Das Script stellt das alte Verhalten für einmalige Suchmaschinen-Schaltflächen wieder her

    Alternativer Tipp von mir: alternative_searchbar.uc.js von https://github.com/Aris-t2/CustomJSforFx.

  • Firefox 57 - (besuchte Links in Rot anzeigen)

    • Speravir
    • 27. März 2021 um 02:32
    Zitat von mgtaucher

    Ich habe festgestellt das es mitunter sehr schwierig ist in der Chronik die richtige Webseit heraus zu finden.

    Man kann die Chronik auch noch durchsuchen.

    Zitat von mgtaucher

    Warum ist beim erneuten Aufruf der Seite, nach dem löschen der Chronik, der Link rot wenn ich diesen noch nicht angewählt habe.

    Hast Du eventuell Prefetch aktiviert? Siehe dazu im Mozilla-Support: Firefox baut unaufgefordert Verbindungen auf – Vorabladen von Inhalten.

  • Youtube Autoplay deaktivieren

    • Speravir
    • 27. März 2021 um 02:12
    Zitat von StandingBill

    Die testweise Installation der Skripte zur Umgehung der Altersbeschränkung auf Youtube hatte keine Wirkung.

    YouTube: Age Verification Bypass funktioniert bei mir.

  • Url-Bar farbiger Balken beim laden.

    • Speravir
    • 23. März 2021 um 20:59
    Zitat von Endor

    Ich habe gestern angefangen den readme für das Script zu erweitern.

    https://github.com/Endor8/userChr…ngbar/README.md

    Gefällt mir. Wer nicht weiß, wie man die Werte ändert, kann doch nachfragen … :)

  • Url-Bar farbiger Balken beim laden.

    • Speravir
    • 23. März 2021 um 20:47
    Zitat von milupo

    Bei manchen ist die Quelle auch überhaupt nicht mehr bekannt. Und es kursieren auch oft mehrere Versionen.

    Man hat das Skript mal irgendwo herbekommen. Diesen Link gibt man dann an.

    Zitat von milupo

    Aborix stellt seine Skripte nur hier rein.

    Hier wäre das dann der Link zum jeweiligen Posting.

    Zitat von milupo

    Man müsste also das Forum nach den Skripten durchsuchen, um die Beiträge zu finden.

    Nein, wenn man sich den Link in die erste Zeile des Skripts als Kommentar kopiert. Das hätte den angenehmen Nebeneffekt, dass er bei einer Neuveröffentlichung automatisch mit kopiert würde – er muss dann natürlich angepasst werden, wenn es ein Update gibt. Mach ich für mich bei Skripten hier aus dem Forum seit Jahren so (Aris und AliceWhite0775 haben selbst entsprechende identifizierende Zeilen in ihren Skripten). Es wird dann noch wenige Ausnahmen geben, wo das alles nicht möglich ist, damit muss man dann leben (wenn das Skript ursprünglich in einer Konversation veröffentlicht wurde, könnte darauf aber beispielsweise hingewiesen werden; ich würde mir selbst dann den Link auf dieses Posting setzen). Hier im Thread habe ich es nicht gemacht, weil ich der Meinung war, dass es aus dem Kontext klar wird.

    Wir können von mir aus hiermit aber Schluss machen, weil ich das Gefühl habe dass ich sinnlos gegen Windmühlen ankämpfe.

  • Youtube Autoplay deaktivieren

    • Speravir
    • 23. März 2021 um 20:21

    Du benötigst ein sogenanntes Userskript (nicht zu verwechseln mit UserChrome-Skript). Dazu musst Du dir eines der Monkey-Addons installieren und dann nach einem passenden Skript suchen. das Problem ist, dass YouTube immer mal wieder Änderungen durchführt und bisherige Skripte dann manchmal nicht mehr funktionieren, so dass man dann nach aktualisierten Skripten suchen muss, denn leider machen das nicht alle der Skriptautoren.

    Wegen der Addons: Ich selbst benutze Violentmonkey, aber vielleicht kommst Du mit dem Original Greasemonkey oder mit Tampermonkey besser klar – und ich habe eben einen interessanten Neuling entdeckt: FireMonkey (der auch Userstile integriert!).

    Wegen der Skripte: Man muss immer mal wieder in Greasy Fork oder OpenUserJS nach "youtube autoplay" suchen. Ich selbst nutzte sehr lange No Youtube Autoplay - Next video button disable / disabled, das aber letztes Jahr nicht mehr funktionieren wollte und weswegen ich auf YouTube Click To Play auswich, was wiederum kürzlich ebenfalls Probleme machte. Das alte Skript hatte ich zum Glück nicht gelöscht, sondern nur deaktiviert, so dass ich bemerkte, dass es kürzlich ein Update gab.

  • Url-Bar farbiger Balken beim laden.

    • Speravir
    • 21. März 2021 um 20:50
    Zitat von Endor

    Mein Vorschlag dazu das Script so wie es ab Firefox 87 läuft

    bei Github hochladen und in der readme dann weitere Erklärungen und

    Änderungsbeispiele anführen.

    Gute Idee! Also nochmal :thumbup:

    Milupo, noch einmal … :)

    Zitat von Speravir

    Allerdings hast Du natürlich insofern Recht, als es viiiel einfacher ist, nur den dritten Wert an den zweiten anzupassen.

    Das war gewissermaßen schon eine Art des Einlenkens, während ich meinen Beitrag schrieb.

    Zitat von milupo

    Hilft aber nur, wenn man auch dorthin verlinkt.

    Das ist ja im Prinzip seit Jahren mein Reden, dass man die Quelle wenigstens nennt … einerseits wegen der Urheberschaft, aber auch, weil man dann unter Umständen nach Aktualisierungen sehen kann (externe Skripte, Skripte hier in einem Thema, das man verpasst hat …). Ich erzeuge damit aber irgendwie immer schlechte Laune.

  • Url-Bar farbiger Balken beim laden.

    • Speravir
    • 20. März 2021 um 20:37
    Zitat von milupo

    Das kann jeder für sich entscheiden, vielleicht fügt man einen Kommentar in das Skript ein, der auf die unterschiedlichen Möglichkeiten hinweist.

    Dann benötigt man aber den Repeating-Linear-Gradient nicht und keine drei Wertangaben und auch keine Angabe zum Winkel, sondern es würde ein weiterer Linear-Gradient ausreichen (also ein vor den schon vorhandenen gesetzter). Allerdings hast Du natürlich insofern Recht, als es viiiel einfacher ist, nur den dritten Wert an den zweiten anzupassen.

    Zitat von milupo

    Endor bevorzugt gestreift und ich verwende derzeit auch gestreift.

    Me too. War meines Erachtens auch schon bei den Addons so.

  • 2020-Update 2: Aktualisierung auf WoltLab Suite 5.3

    • Speravir
    • 20. März 2021 um 20:16
    Zitat von Sören Hentzschel

    Einfach die URL eines Themas oder Beitrags einfügen,

    (etc.) Danke!

    Zitat von Sören Hentzschel

    Du kannst jederzeit die manuelle Link-Funktion nutzen.

    So, wie ich es schon die ganze Zeit mache … deswegen ja die Nachfrage.

  • Url-Bar farbiger Balken beim laden.

    • Speravir
    • 20. März 2021 um 20:11
    Zitat von milupo

    Das funktioniert bei mir gar nicht im Nightly. Ich habe dann z-index entfernt und dann läuft es.

    Hmpf, dabei habe ich das extra in einem neuen Profil getestet – allerdings nicht ohne Z-Index.

    Zitat von milupo

    Übrigens, bei der letzten Farbangabe von repeating-linear-gradient entscheidet die Pixelangabe darüber, ob der Balken durchgehend farbig (6px) oder nicht durchgehend farbig (12px) erscheint.

    Oh, das ist ein Fehler. Bei mir selbst ist dieser Faux-Pas nicht vorhanden (stand schon seit weiß-ich-nicht-mehr auf 12px, vielleicht hatte ich das mal für mich korrigiert), aber ich hatte das Skript hier von weiter oben kopiert. Die Pixelangaben im Repeating-Linear-Gradient hängen natürlich voneinander ab; man könnte zum Beispiel auch den dritten Wert auf 6px belassen und dafür den zweiten auf 3px setzen. Bei gleichen Werten ergibt diese Deklaration keinen Sinn.

    Endor , ich habe das Skript in Beitrag 30 aktualisiert. Neben der anderen Pixelangabe und der Entfernung des Z-Indexes habe ich auch ein (bei mir) unnötiges !important entfernt.

  • 2020-Update 2: Aktualisierung auf WoltLab Suite 5.3

    • Speravir
    • 20. März 2021 um 01:01
    Zitat von .DeJaVu
    Code
    [thread='131191'][/thread]
    [post='1153874'][/post]

    Sören Hentzschel (oder jemand anderes): wie fügt man das eigentlich hier ein? Also außer durch direktes Eintippen. Ich habe bisher immer ausschließlich die Linkfunktion genutzt (und mag die Einblendungen auch nicht, aber evtl. gibt es zum Teil doch Vorteile).

  • Url-Bar farbiger Balken beim laden.

    • Speravir
    • 20. März 2021 um 00:41
    Zitat von milupo

    Ich habe jetzt mal bei #urlbar-background in meinem CSS-Code left: 2em; z-index: -2 dazugefügt und die Prozessleiste funktioniert nun:

    […]

    Die Werte für left und z-index sind willkürlich gewählt. Wichtig ist hier, dass der Wert von z-index negativ sein muss.

    Wow! Da denke ich mir doch, warum nicht alles auf #urlbar-background anwenden? Und das sieht bei mir mit dem anderen Userstil sogar besser aus!
    (Edit: Ein Fehler im CSS-Code repariert: 1x 6px → 12px, entsprechend folgender Postings Z-Index in #urlbar-background entfernt.)

    JavaScript
    /* LoadingBar.uc.js */
    // Location Bar Enhancer5.1; Loading Bar0.3.0
    
    (function(){
        var cssStr = `
                #urlbar-background {
                    background-image: repeating-linear-gradient(-45deg, rgba(255,255,255,0), rgba(255,255,255,0) 6px, rgba(255,255,255,1) 6px, rgba(255,255,255,1) 12px), linear-gradient(to right, rgba(255,255,255) 0%, rgba(69,69,69) 100%);
                    background-size:0 0;
                    background-repeat:repeat-x, no-repeat;
                    transition: background-size 350ms ease 0s;
                }
                #urlbar-background:not([style="background-size: 0% 100%;"]) {
                    animation: progress-bar-stripes 2s linear infinite;
                }
                @keyframes progress-bar-stripes {
                    from {
                        background-position: 0 0;
                    }
                    to {
                        background-position: 51px 0;
                    }
                }
        `.replace(/\s{2,}|\r|\n/,"");
        
        var style = document.createProcessingInstruction("xml-stylesheet", "type=\"text/css\"" + " href=\"data:text/css;base64," + btoa(cssStr) + "\"");
        var mainW = document.getElementById("main-window");
        document.insertBefore(style, mainW);
    
        function main(window) {
          var {document, gBrowser} = window;
          function $(id) { return document.getElementById(id) };
          var urlbar = $("urlbar-background");
          let pageProgress = 0;
          let async = makeWindowHelpers(window).async;
          var LoadingBar = {
            listener: {
              onChangeTab: function(e) {
                urlbar.style.backgroundSize = '0% 100%';
                pageProgress = 0;
              },
              onProgressChange: function(aBrowser,webProgress,request,curSelfProgress,maxSelfProgress,curTotalProgress,maxTotalProgress) {
                if (gBrowser.contentDocument === aBrowser.contentDocument) {
                    var val = (curTotalProgress-1)/(maxTotalProgress-1);
                    pageProgress = val;
                    urlbar.style.backgroundSize = (100*val) + '% 100%';
                    if (val > 0.9)
                      async(function() {
                        if (pageProgress > 0.95)
                            urlbar.style.backgroundSize = '100% 100%';
                    }, 1000);
                }
              },
              onStateChange: function() {
                if (pageProgress > 0.95){
                    async(function() {
                        urlbar.style.backgroundSize = '0% 100%';
                        pageProgress = 0;
                    }, 1000);
                }else{
                    urlbar.style.backgroundSize = '0% 100%';
                }
              }
            }
          };
    
          gBrowser.tabContainer.addEventListener('TabSelect',LoadingBar.listener.onChangeTab,false);
          gBrowser.addTabsProgressListener(LoadingBar.listener);
    
          unload(function() {
            gBrowser.tabContainer.removeEventListener('TabSelect',LoadingBar.listener.onChangeTab,false);
    
            gBrowser.removeTabsProgressListener(LoadingBar.listener);
          }, window);
        }
    
    
    
        watchWindows(main, "navigator:browser");
    
        function runOnLoad(window, callback, winType) {
          window.addEventListener("load", function() {
            window.removeEventListener("load", arguments.callee, false);
    
            if (window.document.documentElement.getAttribute("windowtype") == winType)
              callback(window);
          }, false);
        }
    
        function runOnWindows(callback, winType) {
          function watcher(window) {
            try {
              callback(window);
            }
            catch(ex) {}
          }
    
          let browserWindows = Services.wm.getEnumerator(winType);
          while (browserWindows.hasMoreElements()) {
            let browserWindow = browserWindows.getNext();
            if (browserWindow.document.readyState == "complete")
              watcher(browserWindow);
            else
              runOnLoad(browserWindow, watcher, winType);
          }
        }
    
        function watchWindows(callback, winType) {
          function watcher(window) {
            try {
              callback(window);
            }
            catch(ex) {}
          }
    
          runOnWindows(callback, winType);
    
          function windowWatcher(subject, topic) {
            if (topic == "domwindowopened")
              runOnLoad(subject, watcher, winType);
          }
          Services.ww.registerNotification(windowWatcher);
    
          unload(function() { Services.ww.unregisterNotification(windowWatcher) });
        }
    
        function unload(callback, container) {
          let unloaders = unload.unloaders;
          if (unloaders == null)
            unloaders = unload.unloaders = [];
    
          if (callback == null) {
            unloaders.slice().forEach(function(unloader) { unloader() });
            unloaders.length = 0;
            return null;
          }
    
          if (container != null) {
            container.addEventListener("unload", removeUnloader, false);
    
            let origCallback = callback;
            callback = function() {
              container.removeEventListener("unload", removeUnloader, false);
              origCallback();
            }
          }
    
          function unloader() {
            try {
              callback();
            }
            catch(ex) {}
          }
          unloaders.push(unloader);
    
    
        function removeUnloader() {
            let index = unloaders.indexOf(unloader);
            if (index != -1)
              unloaders.splice(index, 1);
          }
          return removeUnloader;
        }
        
        function makeWindowHelpers(window) {
          let {clearTimeout, setTimeout} = window;
    
          function async(callback, delay) {
            delay = delay || 0;
            let timer = setTimeout(function() {
              stopTimer();
              callback();
            }, delay);
    
            function stopTimer() {
              if (timer == null)
                return;
              clearTimeout(timer);
              timer = null;
            }
          }
    
          return {
            async: async,
          };
        }
    
    })();
    Alles anzeigen

    Endor , wenn es so läuft und Du das wieder übernimmst, erwähne auch und vor allem Milupo. Ich habe hier übrigens z-index: -1 gewählt. Und beachten: Ich habe nicht nur innerhalb des CSS-Bereichs etwas geändert, sondern auch in Zeile 33 32, damit das Skript überhaupt auf den Urlbar-Hintergrund angewandt wird. Das Skript habe ich wieder von weiter oben übertragen, kann also sein, dass die Farbangaben wieder geändert werden müssen.

  • Url-Bar farbiger Balken beim laden.

    • Speravir
    • 19. März 2021 um 19:12

    O je, bei mir ist auch noch noch dieses aktiv: Adressleiste per CSS entsprechend Sicherheitsstatus einfärben.

    Man findet darin diese Stilregel:

    CSS
    #urlbar {
        position: relative;
        z-index: 4;
    }


    Endor , @laubenpieper oder milupo: Könnt ihr mal probeweise in das Skript im CSS-Bereich innerhalb desselben Urlbar-Selektors die beiden Deklarationen eintragen? Es geht hier, soweit ich mich erinnere, vor allem um den Z-Index.

    Allerdings funktioniert das Skript so oder so nicht mehr exakt so wie früher.

    Milupo, versteh ich das richtig, dass die Rundungen über den Userstil von dir selbst eingefügt sind, oder sind die demnächst Standard?

  • Url-Bar farbiger Balken beim laden.

    • Speravir
    • 18. März 2021 um 19:33
    Zitat von Boersenfeger

    Vielen Dank für die Bearbeitung! :) :thumbup:

    Zitat von Endor

    Habe es hochgeladen.

    […]

    Gebe nun nochmals MIthrandir Bescheid. Erledigt

    Freut mich alles!

  • Url-Bar farbiger Balken beim laden.

    • Speravir
    • 17. März 2021 um 20:57

    Nachdem ich mich vor längerer Zeit mal damit beschäftigt hatte (vergleiche Posting vom 18. Juli 2019), hatte ich das Skript fast vergessen. Es lief einfach weiter und funktionierte. Ich benutzte die Version, wie sie Endor oben in Beitrag #2 präsentierte.


    Nun fiel mir in Version 86 aber auf, dass es einen Fehler und eine Warnung verursachte (sicher schon länger), und ich hab es daraufhin leicht umgebaut (Änderungen nur in den Zeilen 5, 15, 17, 20 und 23 plus Kommentarzeile nach vorn verschoben):

    JavaScript
    /* LoadingBar.uc.js */
    // Location Bar Enhancer5.1; Loading Bar0.3.0
    
    (function(){
        var cssStr = `
                #urlbar {
                    background-image: repeating-linear-gradient(-45deg, rgba(255,255,255,0), rgba(255,255,255,0) 6px, rgba(255,255,255,1) 6px, rgba(255,255,255,1) 6px), linear-gradient(to right, rgba(255,255,255) 0%, rgba(69,69,69) 100%);
                    background-size:0 0;
                    background-repeat:repeat-x, no-repeat;
                    transition: background-size 350ms ease 0s !important;
                }
                #urlbar:not([style="background-size: 0% 100%;"]) {
                    animation: progress-bar-stripes 2s linear infinite;
                }
                @keyframes progress-bar-stripes {
                    from {
                        background-position: 0 0;
                    }
                    to {
                        background-position: 51px 0;
                    }
                }
        `.replace(/\s{2,}|\r|\n/,"");
        
        var style = document.createProcessingInstruction("xml-stylesheet", "type=\"text/css\"" + " href=\"data:text/css;base64," + btoa(cssStr) + "\"");
        var mainW = document.getElementById("main-window");
        document.insertBefore(style, mainW);
    
        function main(window) {
          var {document, gBrowser} = window;
          function $(id) { return document.getElementById(id) };
          var urlbar = $("urlbar");
          let pageProgress = 0;
          let async = makeWindowHelpers(window).async;
          var LoadingBar = {
            listener: {
              onChangeTab: function(e) {
                urlbar.style.backgroundSize = '0% 100%';
                pageProgress = 0;
              },
              onProgressChange: function(aBrowser,webProgress,request,curSelfProgress,maxSelfProgress,curTotalProgress,maxTotalProgress) {
                if (gBrowser.contentDocument === aBrowser.contentDocument) {
                    var val = (curTotalProgress-1)/(maxTotalProgress-1);
                    pageProgress = val;
                    urlbar.style.backgroundSize = (100*val) + '% 100%';
                    if (val > 0.9)
                      async(function() {
                        if (pageProgress > 0.95)
                            urlbar.style.backgroundSize = '100% 100%';
                    }, 1000);
                }
              },
              onStateChange: function() {
                if (pageProgress > 0.95){
                    async(function() {
                        urlbar.style.backgroundSize = '0% 100%';
                        pageProgress = 0;
                    }, 1000);
                }else{
                    urlbar.style.backgroundSize = '0% 100%';
                }
              }
            }
          };
    
          gBrowser.tabContainer.addEventListener('TabSelect',LoadingBar.listener.onChangeTab,false);
          gBrowser.addTabsProgressListener(LoadingBar.listener);
    
          unload(function() {
            gBrowser.tabContainer.removeEventListener('TabSelect',LoadingBar.listener.onChangeTab,false);
    
            gBrowser.removeTabsProgressListener(LoadingBar.listener);
          }, window);
        }
    
    
    
        watchWindows(main, "navigator:browser");
    
        function runOnLoad(window, callback, winType) {
          window.addEventListener("load", function() {
            window.removeEventListener("load", arguments.callee, false);
    
            if (window.document.documentElement.getAttribute("windowtype") == winType)
              callback(window);
          }, false);
        }
    
        function runOnWindows(callback, winType) {
          function watcher(window) {
            try {
              callback(window);
            }
            catch(ex) {}
          }
    
          let browserWindows = Services.wm.getEnumerator(winType);
          while (browserWindows.hasMoreElements()) {
            let browserWindow = browserWindows.getNext();
            if (browserWindow.document.readyState == "complete")
              watcher(browserWindow);
            else
              runOnLoad(browserWindow, watcher, winType);
          }
        }
    
        function watchWindows(callback, winType) {
          function watcher(window) {
            try {
              callback(window);
            }
            catch(ex) {}
          }
    
          runOnWindows(callback, winType);
    
          function windowWatcher(subject, topic) {
            if (topic == "domwindowopened")
              runOnLoad(subject, watcher, winType);
          }
          Services.ww.registerNotification(windowWatcher);
    
          unload(function() { Services.ww.unregisterNotification(windowWatcher) });
        }
    
        function unload(callback, container) {
          let unloaders = unload.unloaders;
          if (unloaders == null)
            unloaders = unload.unloaders = [];
    
          if (callback == null) {
            unloaders.slice().forEach(function(unloader) { unloader() });
            unloaders.length = 0;
            return null;
          }
    
          if (container != null) {
            container.addEventListener("unload", removeUnloader, false);
    
            let origCallback = callback;
            callback = function() {
              container.removeEventListener("unload", removeUnloader, false);
              origCallback();
            }
          }
    
          function unloader() {
            try {
              callback();
            }
            catch(ex) {}
          }
          unloaders.push(unloader);
    
    
        function removeUnloader() {
            let index = unloaders.indexOf(unloader);
            if (index != -1)
              unloaders.splice(index, 1);
          }
          return removeUnloader;
        }
        
        function makeWindowHelpers(window) {
          let {clearTimeout, setTimeout} = window;
    
          function async(callback, delay) {
            delay = delay || 0;
            let timer = setTimeout(function() {
              stopTimer();
              callback();
            }, delay);
    
            function stopTimer() {
              if (timer == null)
                return;
              clearTimeout(timer);
              timer = null;
            }
          }
    
          return {
            async: async,
          };
        }
    
    })();
    Alles anzeigen

    Endor, willst Du das bei dir auf der Github-Ressource veröffentlichen? Mithrandir scheint ja leider völlig inaktiv zu sein.

Unterstütze uns!

Jährlich (2025)

62,7 %

62,7% (407,55 von 650 EUR)

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