Aussehen
Suche Einloggen
[c] [meta] [fefe] [erp]

/meta/ – Diskussionen über Dietchan


Antwort erstellen

(≤ 4)



[Zurück]

  • [l] Felix Sun, 19 Jul 2026 08:42:16 GMT Nr. 163967
    PNG 641×639 81.6k
    JPG 712×949 59.5k
    ZUUUUUUUUSE!!! Bitte mach keinen Fefe hier! Im Gegensatz zu Fefe wäre es unverzeilich würdest du jetzt auch noch im Krankenhaus liegen!
  • [l] BlogFefeLinks.user.js spacesynth Sat, 15 Aug 2026 10:07:50 GMT Nr. 164528 SÄGE
    // ==UserScript==
    // @name         # Blog Fefe Links
    // @namespace    spsBlogFefeLinks
    // @description  Expose the URIs
    // @version      1.0.0
    // @author       spacesynth
    // @supportURL   https://github.com/spacesynth/userscripts-collection
    // @icon         https://raw.githubusercontent.com/spacesynth/userscripts-collection/master/utility/icon.png
    // @license      WTFPL
    // @include      *://blog.fefe.de/*
    // @run-at       document-end
    // @grant        none
    // @noframes
    // ==/UserScript==
    
    //use on https://blog.fefe.de/?css=paper.css
    'use strict';
    function fixHefeLinks() {
        var anchors = document.getElementsByTagName("a");
        for (var i = 0; i < anchors.length; i++) {
            if (i >= 3) {
            var domain = /^(?:http|https):\/\/(?:www\.)?([a-zA-Z0-9\.\-]*).*$/.exec(anchors[i]);
            if (domain[1] != "blog.fefe.de") {
            anchors[i].innerHTML = anchors[i].innerHTML + " (" + domain[1] + ")"
            }
            else {
            anchors[i].innerHTML = anchors[i].innerHTML + " 🐗"
            }
    }}}
    fixHefeLinks();


    Falls man das jemals wieder braucht, dann liegt es hier. *löscht es vom repo und der HDD*
    RIFF [F] .w.
  • [l] Felix Wed, 02 Sep 2026 16:49:50 GMT Nr. 164875
    Stößchen, siehe Entwicklungsfaden
  • [l] Felix Sat, 19 Sep 2026 19:23:14 GMT Nr. 165187 SÄGE
    PNG 742×706 67.3k
    PNG 792×705 446.9k
    >>127885
    // ==UserScript==
    // @name         # Dietchan Links
    // @namespace    spsDietchanLinks
    // @description  Expose the URIs
    // @version      1.2.0
    // @author       spacesynth
    // @supportURL   https://github.com/spacesynth/userscripts-collection
    // @icon         https://raw.githubusercontent.com/spacesynth/userscripts-collection/master/utility/icon.png
    // @license      WTFPL
    // @include      *://dietchan.org/*
    // @run-at       document-end
    // @grant        none
    // @noframes
    // ==/UserScript==
    
    'use strict';
    (function() {
        'use strict';
        var urlRegex = /(http[s]{0,1}:\/\/(?:www\.)?(?:[a-zA-Z0-9\.\-\/#~_:]*))/g;
        var elements = document.querySelectorAll('div[class="text"]');
        elements.forEach(function(element) {
            element.innerHTML = element.innerHTML.replace(urlRegex, function(url) {
                return '<a href="' + url + '" target="_blank">' + url + '</a>';
            });
        });
    })();
    


    Dachte ohne Felix brauchen wir auch das nicht mehr, aber der Diätkanal lebt hochaktiv weiter!
  • [l] Felix Sat, 19 Sep 2026 19:31:16 GMT Nr. 165189 SÄGE
    >>165187
    var urlRegex = /(http[s]{0,1}:\/\/(?:www\.)?(?:[a-zA-Z0-9\.\-\/#~_:?=]*))/g;

    hätte ich die rfc gelesen, wüsste ich was sonst noch fehlt, wird nicht der letzte hotfix sein
  • [l] Felix Sat, 19 Sep 2026 20:07:44 GMT Nr. 165190 SÄGE
    //rfc3986 compliant and tested against all of my 654 bookmarks
    var urlRegex = /http[s]{0,1}:\/\/(?:www\.){0,1}(?:[a-zA-Z0-9!#\$%&'\(\)\*\+,-\.\/:;=\?@\[\]_~]*)/g;
    

    Escaping für JS literals sollte auch stimmen. Würde mich überraschen, wenn eine URL jetzt nicht klappt. Brechen tut es hoffentlich immer dank einem whitespace/CR/LF.
  • [l] Diätkanal Notizen Effe Sat, 19 Sep 2026 21:12:26 GMT Nr. 165192
    PNG 1116×715 212.7k
    JPG 700×384 25.6k
    // ==UserScript==
    // @name         # Dietchan Notizblock
    // @namespace    spsDietchanNotizblock
    // @description  Einfacher Notizblock
    // @version      1.0.0
    // @author       spacesynth
    // @supportURL   https://github.com/spacesynth/userscripts-collection
    // @icon         https://raw.githubusercontent.com/spacesynth/userscripts-collection/master/utility/icon.png
    // @license      WTFPL
    // @include      *://dietchan.org/*
    // @run-at       document-end
    // @grant        GM_setValue
    // @grant        GM_getValue
    // @noframes
    // ==/UserScript==
    
    'use strict';
    function babbage_didnt_invent_the_computer() {
        const s = document.createElement("style");
        s.textContent = "#my-notes-box{position:fixed;top:100px;right:24px;width:280px;min-width:180px;background:#fafafa;border:1px solid #d9d9d9;border-radius:4px;box-shadow:0 2px 8px #00000014;z-index:2147483647;font:13px Arial,sans-serif}#my-notes-title{padding:7px 10px;color:#666;background:#f1f1f1;border-bottom:1px solid #dedede;cursor:move;user-select:none}#my-notes-textarea{display:block;box-sizing:border-box;width:calc(100% - 16px);height:160px;min-height:80px;margin:8px;padding:7px;resize:none;border:1px solid #d5d5d5;border-radius:3px;outline:0;font:inherit;color:#444;background:#fff}#my-notes-copy{margin:0 8px 8px;padding:5px 9px;color:#666;background:#f4f4f4;border:1px solid #d2d2d2;border-radius:3px;cursor:pointer}#my-notes-corner-resize{position:absolute;right:1px;bottom:1px;width:14px;height:14px;cursor:nwse-resize}#my-notes-corner-resize:before{content:\"\";position:absolute;right:2px;bottom:2px;width:10px;height:10px;background:linear-gradient(135deg,transparent 42%,#b8b8b8 43% 50%,transparent 51%),linear-gradient(135deg,transparent 58%,#b8b8b8 59% 66%,transparent 67%)}";
        document.head.append(s);
        const b = document.createElement("div");
        b.id = "my-notes-box";
        b.innerHTML = '<div id="my-notes-title">Diätkanal Notizen</div><textarea id="my-notes-textarea" placeholder="Ja Felix also weisste..."></textarea><button id="my-notes-copy" type="button">Sichern & Kopieren</button><div id="my-notes-corner-resize" title="Resize"></div>';
        document.body.append(b);
        const t = b.firstChild,
            a = b.querySelector("#my-notes-textarea"),
            c = b.querySelector("#my-notes-copy"),
            r = b.querySelector("#my-notes-corner-resize");
            a.value = GM_getValue("z1_elektronengehirn", a.value);
        c.onclick = async () => {
            try {
                await navigator.clipboard.writeText(a.value)
                GM_setValue("z1_elektronengehirn", a.value);
            } catch {
                a.select();
                document.execCommand("copy")
            }
            c.textContent = "Jawohl!";
            setTimeout(() => c.textContent = "Gesichert & Kopiert", 1e3)
        };
        t.onmousedown = e => {
            const x = b.getBoundingClientRect(),
                X = e.clientX,
                Y = e.clientY;
            b.style.left = x.left + "px";
            b.style.top = x.top + "px";
            b.style.right = "auto";
            const m = e => {
                    b.style.left = x.left + e.clientX - X + "px";
                    b.style.top = x.top + e.clientY - Y + "px"
                },
                u = () => {
                    document.removeEventListener("mousemove", m);
                    document.removeEventListener("mouseup", u)
                };
            document.addEventListener("mousemove", m);
            document.addEventListener("mouseup", u);
            e.preventDefault()
        };
        r.onmousedown = e => {
            const w = b.offsetWidth,
                h = a.offsetHeight,
                X = e.clientX,
                Y = e.clientY,
                m = x => {
                    b.style.width = Math.max(180, w + x.clientX - X) + "px";
                    a.style.height = Math.max(80, h + x.clientY - Y) + "px"
                },
                u = () => {
                    document.removeEventListener("mousemove", m);
                    document.removeEventListener("mouseup", u)
                };
            document.addEventListener("mousemove", m);
            document.addEventListener("mouseup", u);
            e.preventDefault();
            e.stopPropagation()
        }
    };
    babbage_didnt_invent_the_computer();
    



    Dieser lustige Helfer schwebt mit feinst-fettigem JS im viewport. Man kann seine Ergüsse im Storage von Tampermonkey oder Greasemonkey sogar über einen Browserabsturz hinweg sichern. Überall antworten und dann ganz klassisch, manuell in die echte Box oben kopieren.

  • [l] Felix Sun, 20 Sep 2026 16:26:20 GMT Nr. 165207
    >>165192
    Felix will deine Arbeit nicht kleinreden, aber Felix benutzt seit Jahrzehnten im Feuerfuchs die Erweiterung "Textarea Cache" und möchte an dieser Stelle dafür werben - die hat zwar kein schwebendes Fenster, aber löst dieses Problem auf allen Seiten, nicht bloß hier. Für Felix ist das wirklich eine der absolut essentiallen Erweiterungen, auf einer Stufe mit uBO. Wenn Felix aus irgendeinem Grund den Fuchs mal neu installieren muss, ist das immer eine der ersten Erweiterungen, die Felix installiert. Die hat Felix schon so oft den Arsch gerettet... Felix ist immer wieder erstaunt, wie wenige die kennen und installiert haben.
  • [l] Felix Sun, 20 Sep 2026 16:40:58 GMT Nr. 165208
    >>165207
    Dabei st es doch eigentlich ein Nullproblem, wenn die Antwortbox nur einfach unten wäre, wie es ja offensichtlich intuitiv und richtig wäre! Komplett geisteskrank, die Antwortbox oben zu platzieren!!!!!

    (oder so ähnlich, keine Ahnung, bin nicht Antwortbox-unten-Felix)
  • [l] Felix Sun, 20 Sep 2026 17:01:26 GMT Nr. 165211 SÄGE
    >>165207
    >>165208
    Nehme ich nicht krumm, der Button könnte ja auch:
    antwortbox.value = schwebebox.value;
    absendebutton.click();
    

    Ich meine ob unten oder oben oder in der schwebe. Ich will einfach mal jemanden mobilisieren irgendwas zu koten. Und ja, das addon ist geil. Felix bat mich vor langer Zeit um kot zu einer floating 4chan style box. Das ist jetzt halb erreicht. Brauchen selbst tue ich das nicht.
    Programmiert einfach aus Spaß! Gibt zu wenig Forks, macht es zu eurem code.


[Zurück]
[c] [meta] [fefe] [erp]