V6 - JS/JQ in Plugin-Elementen

24.02.2023 13:08 (zuletzt bearbeitet: 24.02.2023 13:23)
avatar  Mike48
#1 V6 - JS/JQ in Plugin-Elementen
avatar
Mitglied

V6 macht es einem aber schon schwer, Plugins dafür zu entwickeln.
JS und JQuery funktioniert scheinbar erst, wenn die Seite komplett geladen ist.
Wenn man das aber in Elementen verwenden will, die nicht die Fußzeile sind, dann gibt es nur Errors in der Konsole.

1
2
3
 
Uncaught ReferenceError: xobor is not defined
Uncaught ReferenceError: $ is not defined
 
 



Wenn man zB. im Element thread_after_message Variablen oder JQuery verwenden will, geht das nicht.
Kann man also erst ausführen, wenn die Seite Geladen ist, Dann sind aber alle Beiträge schon durch die Schleife gelaufen.

Beispiel:
Ich muss die sessionstorage Variable einlesen, bevor die Schleife für die Beiträge durchlaufen wird, da innerhalb der Schleife der Wert aus sessionstorage gebrucht wir.
Einziger Ausweg wäre warscheinlich, die sessionstorage entweder in der Fußzeile zu laden, oder mit onload warten bis die Seite geladen ist. Dann muss ich aber wieder mit einer Schleife alle Beiträge nochmal durchlaufen lassen, um nachträglich die Manipulation an den Beiträgen vorzunehmen.
Dadurch habe ich aber erst einmal das auf dem Bildschirm, was ich eigentlich nicht sehen soll. Bei langsamen Verbindungen oder lamen Geräten halt um so länger. Das ist nicht im Sinne des Erfinders.


www.friends-of-xobor.de (621181 - V4 Template)
www.seniorenclub-sel-koeln.de (578865 - V6 Template)

 Antworten

 Beitrag melden
24.02.2023 14:05
avatar  Ingmar
#2 RE: V6 - JS/JQ in Plugin-Elementen
avatar
Technik

Hey Mike.

Das ist schon Absicht so. Es gehört heutzutage zum guten Programmierstil, dass größere Bibliotheken erst am Seitenende geladen werden.
Dabei geht es gerade um die von dir angesprochenen langsamen Internetverbindungen, die früher oft erst einmal wertvolle Sekunden gar nichts zu sehen bekamen, bis dann endlich Jquery und ggf. zugehörige Addons geladen waren.

Wenn du in deinen Plugins Dinge veränderst, gibt es verschiedene Möglichkeiten die vorherige Anzeige zu vermeiden. Du kannst z.B. weiter oben einen css-tag ausgeben, der die Beiträge erst einmal ausblendet - oder die opacity auf 0 stellt - bis dein Script vollständig geladen ist.

Oder du lädst Javascript und das Xobor.js schon weiter oben. Das geht natürlich auch, hätte aber wie gesagt negative Auswirkungen auf die Ladezeit.

Oder du machst das was du machen musst mit "Vanilla JS", ohne Jquery. Im Zweifel hilft chatgpt gerne bei der "übersetzung":
https://chat.openai.com/chat

Viele Grüße,
Ingmar


 Technik · Homepagemodules.de · Miranus GmbH

 Antworten

 Beitrag melden
24.02.2023 15:02 (zuletzt bearbeitet: 24.02.2023 15:16)
#3 RE: V6 - JS/JQ in Plugin-Elementen
l2
Mitglied

ich warte ein paar Minuten Millisec

in dem ich von dieser Warte-Funktion aus starte

1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
 do_afterwait=function() {
if (typeof(xobor) =='object' && xobor.mbt) {
console.log("xobor.mbt verfügbar");
} else{
console.log("xobor.mbt nicht da");
}
if (typeof($) =='object') {
console.log("jquery verfügbar");
} else{
console.log("jquery nicht da");
}
}
window.setTimeout(do_afterwait,500);
 
 




ach sehe schon, bei deinem Problem hilft es nicht ..... erst lesen - dann schreiben
sorry-

ich arbeite mit document.body.style.visibility ,
erst wenn ich alle Manipulationen durchgeführt habe, ändere ich von "hidden" auf "visible". Bilde mir ein, danach geht das Rendern der Seite schneller.





... würde es „Fussball spielen” heissen

vG Bernd‍

 Antworten

 Beitrag melden
24.02.2023 15:25
avatar  Ingmar
#4 RE: V6 - JS/JQ in Plugin-Elementen
avatar
Technik

Vielleicht noch als Ergänzung:
Ich stimme dir völlig zu, dass die Entwicklung im V6 komplexer ist als in den alten Templates.

Das liegt aber hauptsächlich daran, dass mit dem Aufkommen der mobilen Enderäte die Web-Programmierung insgesamt viel komplexer geworden ist.
Wo man früher mit einem Designer die perfekte Pixelbreite für irgendeinen Inhalt bestimmen konnte muss man nun Wege finden, den gleichen Inhalt auf allem mögliche Geräten "gut" aussehen zu lassen. Das gelingt nur, wenn man vielleicht auf dem Handy einen kürzeren Text oder eine kleine Grafik ausgibt als am PC. Und das wiederum macht jegliche Entwicklung um einiges komplizierter, das lässt sich leider nicht vermeiden.

Viele Grüße,
Ingmar


 Technik · Homepagemodules.de · Miranus GmbH

 Antworten

 Beitrag melden
24.02.2023 17:23
avatar  Mike48
#5 RE: V6 - JS/JQ in Plugin-Elementen
avatar
Mitglied

Die Xobor Plugi API wird scheinbar auch erst am Ende der Seite geladen. dadurch ist im Inline Element kein getdeep, sessionstorage, localstorage, getData nusw. möglich.

Das folgert also, dass ich für das V6 komplett anders vorgehen muss.
Ich muss also erst warten, bis die Seite geladen ist, und dann statt zB. das Inline topic_question_inline_after_message zu benutzen, die ganzen Beiträge noch mal dur die Schleife laufen lassen, um dann zu manipulieren. Vorher wie schon gesagt, am besten die Elemte unsichtbar machen bis sie manipuliert sind.

Mal sehen, ob ich das zufriedenstellend hinbekomme.

. . . auch mein größter Kritiken, was mir zum Verhängnis werden könnte.


www.friends-of-xobor.de (621181 - V4 Template)
www.seniorenclub-sel-koeln.de (578865 - V6 Template)

 Antworten

 Beitrag melden
Bereits Mitglied?
Jetzt anmelden!
Mitglied werden?
Jetzt registrieren!