in meinem Forum wohnt jetzt eine Fliege die nach 9 Sekunden verschwindet und nach 5 Sekunden an einer anderen Position wieder erscheint und das endlos im Wechsel. Ich habe nur noch nicht das richtige Template gefunden, hier mein Plugin
<script> (function() { var bild = document.getElementById("meinBild");
function neuePosition() { var x = Math.floor(Math.random() * (window.innerWidth - 150)); var y = Math.floor(Math.random() * (window.innerHeight - 150));
bild.style.left = x + "px"; bild.style.top = y + "px"; }
function zyklus() { neuePosition(); // neue Position bild.style.display = "block"; // Bild anzeigen
setTimeout(function() { bild.style.display = "none"; // nach 9 Sekunden ausblenden
setTimeout(zyklus, 5000); // nach 5 Sekunden wieder erscheinen }, 9000); }
zyklus(); })(); </script>
wo sollte es hin? zur Zeit habe ich es hier Obere Leiste .... footer pages ......[Template-Element existiert bereits] foben_footer Forum Ansicht .... footer pages ...... [Template-Element existiert bereits] forum_footer
dein Plugin ist eine super Idee für einen kleinen Foren-Gag! Damit die Fliege im modernen Business v4 Design perfekt läuft und deine User nicht gestört werden, solltest du das Skript an ein paar Stellen optimieren.
Wenn man ein solches visuelles Skript dauerhaft in einem Forum laufen lässt, gibt es nämlich ein paar versteckte Probleme, an die man im ersten Moment gar nicht denkt:
1. Klick-Blockaden bei Links: Sitzt die Fliege auf einem wichtigen Button oder Link, könnte der User dort normalerweise nicht mehr draufklicken. In diesem optimierten Code ist das so gelöst, dass die Fliege zwar registriert, wenn die Maus über sie fährt (und erschrocken stehen bleibt), sie blockiert aber keine Klicks!
Wenn ein User auf die Fliege klickt, geht der Klick automatisch DURCH die Fliege hindurch auf das darunterliegende Foren-Element. Das Forum bleibt also zu 100 % normal bedienbar.
2. CPU- & Akku-Schutz: Unendliche JavaScript-Schleifen belasten den Browser. Wenn ein User das Forum in einem Tab offen lässt, aber gerade auf einer anderen Seite surft, schaltet sich die Fliege im Hintergrund komplett ab. Das schont die Prozessorleistung massiv.
3. Smartphone-Optimierung: Auf kleinen Handy-Displays nervt eine herumfliegende Grafik beim Lesen extrem und verbraucht unnötig mobiles Datenvolumen. Das Skript schaltet sich auf Mobilgeräten automatisch ab.
4. Riesen-Monitore (4K): Auf sehr breiten Bildschirmen fliegt das Insekt sonst ganz weit an den linken oder rechten Rand, komplett außerhalb des eigentlichen Foren-Inhalts. Der Flugbereich wurde sinnvoll begrenzt.
5. Suchmaschinen (SEO): Google-Crawler sollten das Skript ignorieren, damit das Forum dadurch nicht langsamer indexiert wird.
### Die Lösung & wo es hingehört:
Erstelle im Adminbereich ein neues Plugin unter "Plugins" -> "Plugin-Entwicklung" mit dem Element-Typ "Footer". Alternativ kannst du den Code auch direkt unter "Layout" -> "Templates" ganz unten in das Template "Layout: Footer" einfügen.
Hier ist der komplett überarbeitete, server- und benutzerfreundliche All-in-One-Code:
<!-- WICHTIGER DSGVO-TIPP: Lade das Fliegen-GIF am besten herunter und lade es im eigenen Xobor-Adminbereich unter "Layout -> Bilder hochladen" hoch. Ersetze dann unten den src-Link durch deinen eigenen Foren-Link, um Abmahnungen wegen fremder Daten-Nachladung zu vermeiden! -->
<style> /* Schont mobile User: Blendet die Fliege auf Smartphones und Tablets komplett aus */ @media (max-width: 1024px) { #meinBild { display: none !important; } } </style>
<script> (function() { // 1. SCHUTZ: Suchmaschinen-Bots & Mobilgeräte sofort ignorieren if (/bot|googlebot|crawler|spider|robot|crawling/i.test(navigator.userAgent)) return; if (window.innerWidth <= 1024) return;
var bild = document.getElementById("meinBild"); if (!bild) return;
var timerAktiv = null; var timerInaktiv = null; var istPausiert = false;
// Funktion für die Zufallsposition function neuePosition() { // -80 sorgt dafür, dass die Fliege nicht halb aus dem Bildschirmrand verschwindet var x = Math.floor(Math.random() * (window.innerWidth - 80)); var y = Math.floor(Math.random() * (window.innerHeight - 80));
bild.style.left = x + "px"; bild.style.top = y + "px"; }
// Der Haupt-Flugzyklus function zyklus() { // Altslasten aufräumen, um Doppelschleifen bei schnellen Seitenwechseln im Forum zu verhindern clearTimeout(timerAktiv); clearTimeout(timerInaktiv);
// 2. SCHUTZ: Pausieren, wenn der Foren-Tab inaktiv ist (schont die PC-Leistung der User) if (document.hidden || istPausiert) { timerInaktiv = setTimeout(zyklus, 3000); return; }
timerAktiv = setTimeout(function() { if (!istPausiert) { bild.style.opacity = "0"; // Sanftes Ausblenden timerInaktiv = setTimeout(zyklus, 5000); // 5 Sekunden Pause, bis sie neu erscheint } }, 9000); // 9 Sekunden lang sichtbar }
// INTERAKTION: Wenn der User mit der Maus über die Fliege fährt, bleibt sie "erschrocken" stehen. // So blockiert sie niemanden beim Lesen eines Beitrags. bild.addEventListener("mouseenter", function() { istPausiert = true; clearTimeout(timerAktiv); });
// Wenn die Maus weggeht, fliegt sie nach kurzer Verzögerung weiter bild.addEventListener("mouseleave", function() { istPausiert = false; timerAktiv = setTimeout(function() { bild.style.opacity = "0"; timerInaktiv = setTimeout(zyklus, 2000); }, 2000); });
// Skript erst starten, wenn das Forum vollständig geladen ist if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", zyklus); } else { zyklus(); } })(); </script>
### Die wichtigsten Verbesserungen auf einen Blick:
* position: fixed;: Die Fliege fliegt im sichtbaren Bereich des Bildschirms mit, auch wenn der User nach unten scrollt.
* pointer-events: auto; in Kombi mit dem Hover-Effekt: Man kann durch die Fliege hindurchklicken, aber sobald man sie mit der Maus berührt, bleibt sie stehen ("einfrieren"). Sie stört somit keinen Lesefluss.
* opacity (CSS-Blending): Die Fliege ploppt nicht mehr abgehackt auf, sondern blendet sich flüssig und professionell ein und aus.
* visibilitychange (Energiesparmodus): Klickt der User auf einen anderen Browser-Tab, schaltet sich die Fliege im Hintergrund komplett ab.
Viel Spaß mit dem neuen Mitbewohner in deinem Forum!
Viele Grüße
Daishi
P.S. Ist nur eine idee aber Wolfgang kennt sich da besser aus und weis bestimmt genau wo es hingehört. Wollte blos ein bischen helfen, hoffe das ich soweit an alles gedacht habe aber lassen wir erst mal wolfgang drüber schauen was er dazu meint vieleicht haben wir noch wichtige details vergessen.
<script> // ---- Einstellungen ---- // var dauer = 9000; // Anzeigedauer in ms var pause = 5000; // Pause bis zum nächsten Erscheinen var wiederholungen = 3; // Anzahl der Durchläufe pro Besuch // ----------------------- //
ich habe es hier eingebaut Obere Leiste .... footer pages ......[Template-Element existiert bereits] foben_footer und Forum Ansicht .... footer pages ...... [Template-Element existiert bereits] forum_footer
<script> // ---- Einstellungen ---- // var dauer = 9000; // Anzeigedauer in ms var pause = 5000; // Pause bis zum nächsten Erscheinen var wiederholungen = 3; // Anzahl der Durchläufe pro Besuch var pausetage = 4; // Anzahl der Tage Pause nach 1 Tag Anzeige // ----------------------- //
document.addEventListener("DOMContentLoaded", () => { var last = localStorage.getItem("fliege_lastday"); var heute = new Date().toDateString();
if(last === heute) return; if(last){var diff = (new Date(heute) - new Date(last)) / 86400000; if(diff < pausetage) return;} localStorage.setItem("fliege_lastday", heute);
if(sessionStorage.getItem("fliege_done")) return;
var bild = document.getElementById("meinBild"); var count = 0;
function pos(){bild.style.left = (Math.random()*(innerWidth-150))+"px"; bild.style.top = (Math.random()*(innerHeight-150))+"px";} function run(){ if(count++ >= wiederholungen){sessionStorage.setItem("fliege_done","1");return;} pos(); bild.style.display="block";