Hallo,
Ich bin selber oft am Scripten, aber googlen hilft nicht immer (vielleicht such ich auch nicht richtig). Deshalb dachte ich, hier kann jeder mal reinschreiben, was für Hilfe er benötigt und die, die helfen können, helfen dann.
Ich hoffe die Idee gefällt euch
Hilfe beim Scripten benötigt
-
-
Ich habe auch schon direkt eine Frage:
Ich versuche die Gesamtcredits-Zahl direkt auf die normale Ansicht bekommen.
Ich hab schon versucht, im Hintergrund die Profilseite zu öffnen und dann die Zahl im Browsercahe zu speichern, um sie anschliessend im Hauptfenster auszugeben. Ich bin aber daran gescheitert, die zahl auszulesen.
Wenn also keine Möglichkeit gefunden wird, das ohne diesem Öffnen zu machen, wäre das cool, trotzdem würden mich beide Lösungen interessieren. -
Solange du keine $.ajax Anfragen an den Server stellst ist alles in Ordnung. Wenn du es irgendwie im Hintergrund machst, kannst du die Daten in den Localstorage schreiben - von dort aus wird das global für www.leitstellenspiel.de gespeichert.
Speichern: localStorage.setItem(key, data)
Auslesen: localStorage.getItem('key')
Löschen: localStorage.removeItem('key')
Ohne das Öffnen des Profils geht es nur wenn man wie gesagt einen $.ajax call auf /profile macht. Jedoch ist das nicht erlaubt!
Daher musst du das irgendwie anders lösen - evtl:
- Button auf der Hauptseite anzeigen mit target="_blank", welches das Profil im neuen Tab öffnet
- anschließend schreibt das Script die Daten in den localStorage
- wenn die Daten da sind kann man diesen Tab automatisch schließen
- Daten auslesen & verarbeiten -
mit localStorage wollte ich das auch machen, jedoch ich hab es nicht geschafft nur die Zahl zu lesen
-
Schau Dir doch mal das Script zum Einsatz-Helfer an - eventuell kannst Du Deine Idee da mit anhängen oder das ähnlich aufbauen, wie dort.
Die Idee ist dahinter nicht schlecht und vermeidet zusätzliche Anfragen an den Server.Eine andere Idee wäre es, die Missionsliste einmal auszulesen und dann als Datei zu speichern und da direkt drauf zu zugreifen.
-
Könnte ich dann mal einen Link haben, ich hab noch nichts gefunden
-
das Script was @FlorianRhaus meint sollte das hier sein Einsatzhelfer @KBOE2
-
@SanniHameln danke für den Link und @FlorianRhaus danke für die Idee. leider hat mir das bisher nichts geholfen
Ich hab aber auch noch ein 2. Problem, für ein anderes Script:Ich lasse eine Lightbox öffnen. Wie kann ich da jetzt Text reinschreiben?
Die Lightbox wird schon geöffnet, jetzt fehlt mir aber an wissen, um sie zu befüllen. Ich hab's schon mit dem vergeben einer ID versucht, vielleicht hab ich ja da was falsch gemacht:Müsste ich dann nicht irgendwie mit
Text einfügen können?
-
Ohne das Öffnen des Profils geht es nur wenn man wie gesagt einen $.ajax call auf /profile macht. Jedoch ist das nicht erlaubt!
Daher musst du das irgendwie anders lösen - evtl:
- Button auf der Hauptseite anzeigen mit target="_blank", welches das Profil im neuen Tab öffnet
- anschließend schreibt das Script die Daten in den localStorage
- wenn die Daten da sind kann man diesen Tab automatisch schließen
- Daten auslesen & verarbeitenWo steht denn, dass AJAX-Calls generell nicht erlaubt sind? Der von dir geschilderte Work-Around erzeugt doch streng genommen noch mehr Requests an den Server (durch zusätzliches Laden von Bildern, CSS, JS, etc)
Ich denke, dass AJAX Calls nur dann aus Sicht des Admins sinnvollerweise verboten sind, wenn sie tatsächlich (z.B. durch Polling) die Serverlast zusätzlich erhöhen. Oder geht es um die dadurch umgangene Einblendung von Werbeanzeigen?
Bei einem einmaligen Auslutschen der Credits in /profile würde ich da zumindest ein Auge zudrücken. Aber ich entscheide das ja nicht
-
Müsste ich dann nicht irgendwie mit
Text einfügen können?
Nö, du müsstest im Fenster erst mal die iframes löschen
dann könntest du mit
eigenen Code rein packen.
Das ist aber eine relativ schmutzige Lösung, da du damit die Lightbox ein Stück weit "kaputt" machst. Du müsstest deinen eingefügten Content dann auch wieder entfernen, sonst bleibt er bis zum Page-Reload immer drin.
Eine Möglichkeit wäre die lightboxOpen() zu überschreiben:Um das aber ausdrücklich zu sagen: Schön is dat auch nich
-
-
-
Erst open, dann remove, dann append.
CodeDas sollte (flüchtig getestet) funktionieren. Wenn du die Funktion so überschreibst, könntest du mittels lightboxOpen('<div>Hallo Hallo</div>'); eigenen Content in der Lightbox darstellen. Nochmal die Betonung darauf, dass es nicht schön ist.
-
das ist wirklich logisch, sie erst zu öffnen. War wohl gestern Abend nicht mehr ganz bei der Sache.
-
Ich hab das jetzt mal so:
Aber es hat einfach keine Lust zu funktionieren, es kommt nur die Fehlermeldung: "Seite nicht gefunden". Was ist da jetzt schon wieder falsch?
-
Manchmal hilft es auch, sich eine Funktion einfach mal anzuschauen:
JavaScriptfunction lightboxOpen(t) { if (1 == mobile_bridge_use) mobileBridgeAdd("lightbox_open", {url: t}); else { var e = parseInt($("#lightbox_background").css("width")); var i = parseInt($("#lightbox_background").css("height")); var n = i - 100; 592 > n && (n = i - 30); var s = e - 70; 862 > s && (s = e - 0); var o = s - 2, a = n - 34, r = (e - s) / 2; $("#lightbox_box").css("width", s + "px"); $("#lightbox_box").css("height", n + "px"); $("#lightbox_box").attr("iframeWidth", o); $("#lightbox_box").attr("iframeHeight", a); $("#lightbox_box").show(); $("#lightbox_box").append('<iframe class="lightbox_iframe" style="width:' + o + "px;height:" + a + 'px" id="lightbox_iframe_' + iframe_lightbox_number + '"></iframe>'); $("#lightbox_iframe_" + iframe_lightbox_number).attr("src", t); $("#lightbox_iframe_" + iframe_lightbox_number).show(); $("#lightbox_background").show(); $("#lightbox_box").css("left", r + "px"); $("#lightbox_box").css("top", (i - n) / 2 + "px"); $("#lightbox_iframe_" + iframe_lightbox_number).load(function () { $(this).contents().find("#iframe-inside-container").css("height", a).css("width", o) }); setTimeout('$("#lightbox_iframe_" + iframe_lightbox_number).focus();', 100) }}function lightboxClose() { setTimeout('$("#lightbox_iframe_' + iframe_lightbox_number + '").remove();', 5e3); $("#lightbox_background").hide(); $("#lightbox_box").hide(); $("#lightbox_iframe_" + iframe_lightbox_number).hide(); iframe_lightbox_number += 1}Daraus können wir kürzen:
JavaScriptIst noch nicht getestet, könnte aber funktionieren.
-
-
In der Tat eine gute Frage, dazu muss man erst wissen:
Bei && wird die zweite Bedingung nur ausgeführt, wenn die erste bereits true ist. Bei & würden immer beide Bedingungen ausgeführt werden. (meine ich zumindest, der Kurs ist auch schon wieder ein paar Wochen her^^)
Hier könnte es also auch ausgeschrieben werden: -
Danke für die schnelle Antwort. Das war wahrscheinlich auch das Problem in einem anderen Script...
Jetzt bringt Tampermonkey bei mir folgende Meldungen:- Bei den beiden Sachen, die ich eben nachgefragt habe: "Expected an assignment or function call and instead saw an expression"
- Bei den beiden setTimeout: "Implied eval. Consider passing a function instead of a string"
Ich schätze Punkt 2 ist fälschlicherweise als falsch angegeben, da doch das .focus() bzw. .remove() eine Funktion ist (oder?)
Punkt 1 bereitet mir jedoch noch Probleme, warum das als Fehler markiert wirdEDIT: Ich versuch das mal in eine "normale" If-Bedingung umzuschreiben, vielleicht will es dann ja"
-
Achja, völlig vergessen. Versuch bei den Timeouts mal die 5e3 zu ner 100 zu machen. Schmeißt er dir denn eine Zeile mit aus?