<script> document.addEventListener("DOMContentLoaded",()=>{"use strict"; // Grundeinstellungen const BE="./page-610439-115.html", PN="tu211", DE="https://files.homepagemodules.de/b610439/a_1695_e27e9adf.png", HW="• Der Bild-Extractor wird geöffnet.\n• Mit einem Klick auf ein anderes Bild kannst du das Vorschaubild ersetzen.\n• Verwende nur dauerhaft gültige Bildadressen.";
const si=new URLSearchParams(location.search).get("fnewimg");if(si){if(!IU(si))alert("Dieses Bild hat nur eine temporäre Xobor-Secure-Adresse und kann nicht als Vorschaubild verwendet werden.\n\nBitte in Xobor 'Dauerhaft gültige Links für Dateianhänge' aktivieren.");else{const nt=`[fnewImg]${si}[/fnewImg]`;Object.keys(sessionStorage).filter(k=>k.startsWith("fnew_img_")).forEach(k=>sessionStorage.removeItem(k));const ins=()=>{const ta=document.querySelector('textarea[name="nachricht"]');if(!ta)return setTimeout(ins,200);ta.value=ta.value.replace(/\s*\[fnewImg\][\s\S]*?\[\/fnewImg\]\s*/gi,"\n").replace(/\n{3,}/g,"\n\n").trimEnd();ta.value+=`\n\n${nt}\n`;setTimeout(()=>{ta.scrollTop=ta.scrollHeight;ta.scrollIntoView({behavior:"smooth",block:"center"})},350)};ins()}}const imp=(e,p,v)=>e?.style.setProperty(p,v,"important");const AMR=r=>{if(!mobile())return;const ic=r.querySelector(".fnewIcon"),dc=r.querySelector(".fnewDesc");if(!ic||!dc)return;const icc=ic.closest("td,th")||ic,dcc=dc.closest("td,th")||dc;["display:flex","flex-direction:column","width:100%","margin:0 0 22px","padding:0","box-sizing:border-box","border-bottom:2px solid #b8bec5"].forEach(x=>imp(r,...x.split(":")));[...r.children].forEach(c=>imp(c,"display",(c===icc||c===dcc)?"block":"none"));[["display","block"],["order","1"],["width","100%"],["min-width","100%"],["max-width","100%"],["margin","0"],["padding","0"],["border","0"],["float","none"],["box-sizing","border-box"],["text-align","left"]].forEach(([p,v])=>imp(icc,p,v));if(ic!==icc)[["display","block"],["width","100%"],["margin","0"],["padding","0"]].forEach(([p,v])=>imp(ic,p,v));const il=ic.querySelector("a.fnewImageLink");if(il)[["display","block"],["position","relative"],["width","100%"],["max-width","100%"],["margin","0"],["padding","0"],["line-height","0"]].forEach(([p,v])=>imp(il,p,v));const im=ic.querySelector("img.fnewImg");if(im)[["display","block"],["width","100%"],["min-width","100%"],["max-width","100%"],["height","auto"],["max-height","none"],["object-fit","contain"],["margin","0"],["padding","0"],["border","0"]].forEach(([p,v])=>imp(im,p,v));[["display","block"],["order","2"],["width","100%"],["min-width","100%"],["max-width","100%"],["margin","0"],["padding","0"],["float","none"],["box-sizing","border-box"],["white-space","normal"]].forEach(([p,v])=>imp(dcc,p,v));[["display","block"],["width","100%"],["min-width","100%"],["max-width","100%"],["margin","0"],["padding","6px 10px 10px"],["float","none"],["box-sizing","border-box"],["white-space","normal"],["overflow","visible"]].forEach(([p,v])=>imp(dc,p,v));positionAdminLoupe(ic);FTAS(r);r.dataset.fnewMobileInlineDone="1"};const AMA=()=>{if(!mobile())return;document.querySelectorAll("#showlast_threads .forum_listing_header,#showlast_threads thead").forEach(e=>imp(e,"display","none","important"));document.querySelectorAll("#showlast_threads .fnewRow").forEach(AMR)};const SMO=()=>{if(!mobile())return;AMA();const t=document.getElementById("showlast_threads")||document.body,o=new MutationObserver(()=>requestAnimationFrame(AMA));o.observe(t,{childList:true,subtree:true});[200,500,1000,1800].forEach(ms=>setTimeout(AMA,ms))};SMO()}); </script>
Zitat von Wolfgang im Beitrag #43 Gedacht ist das Skript für Foren mit bis zu 150 Bilder pro Thema ... Es gibt keinen Turbo-Modus.
Genau, dann ergänz ich hier mal, dass wir genau den brauchten: danke Wolfgang, dass du das möglich gemacht hast!
Mit unserer jetzigen Version bin ich sehr zufrieden. Es wird jeweils der Text des letzten Beitrags angezeigt inklusive Beitrags-Titel wenn abgeändert durch eine H2-Überschrift ("Ue"). (Den Thread-Titel sieht man immer ganz kurz beim Neuladen der Seite.) Gerade unsere beliebten Threads haben teilweise schon zz. 2000-3000 große Bilder. Unsere Version hat deswegen die letzte Seite voreingestellt, wo dann voraussichtlich ein aktuelles Bild passend zum Text zu finden ist. Sonst kann ich andre URLs zum Durchsuchen angeben, zum Beispiel die vorletzte Seite. Aber da oben immer(?) die bereits eingefügten Bildern angezeigt werden, ist normalerweise sinnvoll ein voriges Bild nehmen, sofern nix Aktuelles passt. Eine schicke große Birne als Stellvertreter-Icon find ich auch erstmal inspirierend, sich etwas dazu zu denken, es zu lassen, passt manchmal, oder ersetzen.
Sehr schön. Danke auch nochmal von mir an euch für die ganzen Ideen!
Ich habe dabei wieder einiges gelernt: Eine Anwendung oder ein Skript funktioniert nicht allein dann gut, wenn das sichtbare Ergebnis stimmt. Wirklich sauber und stabil läuft es erst, wenn auch technisch im Hintergrund alles passt – also möglichst wenige unnötige Fetch-Anfragen entstehen, die Konsole fehlerfrei bleibt und keine überflüssigen Prozesse oder Aufrufe stattfinden.
Vor fünf Jahren wusste ich gerade einmal, wie man einen Computer einschaltet – viel mehr aber auch nicht. Umso spannender ist es für mich heute zu verstehen, was im Hintergrund einer Anwendung passiert und warum ein Skript nicht nur funktionieren, sondern auch technisch sauber aufgebaut sein muss.
Wolfgang, bitte vormerken: entweder am 13.09. oder am 14.09. =
Themen bei der Community für Transportunternehmer und Führungskräfte der Transport- und Logistikbranche: