zurück zur Startseite
  


Zurück XHTMLforum > Webentwicklung (außer XHTML und CSS) > Javascript & Ajax
Seite neu laden Verständnisfrage zum Laden von jQuery

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 12.04.2017, 12:21
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 11.04.2017
Beiträge: 12
GeneralMops befindet sich auf einem aufstrebenden Ast
Standard Verständnisfrage zum Laden von jQuery

Hallo,

für Joomla gibt es ein nettes Plugin, um Diashows & Co. zu gestalten, namens DJ-ImageSlider. Dieser Slider verwendet jQuery. Aus Performancegründen wird ja immer wieder empfohlen, die Javascripte am Ende der Seite aufzurufen. Habe ich gemacht.

ABER: Das o.g. Plugin funktioniert nur wenn jQuery im Head aufgerufen wird. Was kann man da machen?
Ich dachte, dass durch das "späte" Laden von Javascript nur einfach der normale Seitenaufbau beschleunigt werden soll. Müsste ein Script, das auf jQuery setzt dann nicht trotzdem funktionieren, auch wenn jQuery am Ende des HTML-Dokuments eingebunden wird?


Cheers,
Mops
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 12.04.2017, 12:35
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 30.01.2014
Beiträge: 1.631
cloned ist ein sehr geschätzer Menschcloned ist ein sehr geschätzer Menschcloned ist ein sehr geschätzer Mensch
Standard

Hier noch weitere Hinweise zur Grundfunktion von Javascript:
Auf Variablen kann erst zugegriffen werden, nachdem sie referenziert wurden. Greift man auf nicht deklarierte Variablen zu, dann fliegt ein Fehler.
jQuery verwendet die Variable $, schreibt man nun ein jQuery Plugin so greift diese auf $(".meinElement").addClass() zu, was natürlich erst existiert, nachdem jQuery geladen wurde.

Man muss das Javascript für das Plugin erst aufrufen, nachdem jQuery geladen wurde, dann ist $ auch für jQuery definiert. Vielleicht ist das Plugin so schlampig geschrieben, dass es zwingend inline Javascript verwendet?
Dann müsstest du das inline JS auslagern und in ein separates JS-File geben.

Edit: ad "Ich dachte, dass durch das "späte" Laden von Javascript nur einfach der normale Seitenaufbau beschleunigt werden soll"
Ja, er wird deshalb beschleunigt, weil: Trifft ein Browser auf eine .js Datei dann lädt er die erstmal runter. Ist er damit fertig, schaut er, was danach kommt. Das, was in der JS Datei steht, wird auch gleichzeitig ausgeführt und interpretiert. Fügst du die Dateien erst am Ende ein, dann wird das parsen der .js-Datei erst gemacht, nachdem das gesamte HTML da ist. Dem User fällt es dann nicht mehr auf, dass der Browser im Hintergrund noch weiter rechnet.

Edit 2:
Auch hier wieder der Hinweis auf die Konsole der Browser Entwicklertools, dort solltest du das sofort sehen. Verwendest du diese eigentlich?

Geändert von cloned (12.04.2017 um 12:39 Uhr)
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 12.04.2017, 12:48
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 11.04.2017
Beiträge: 12
GeneralMops befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von cloned Beitrag anzeigen
Hier noch weitere Hinweise zur Grundfunktion von Javascript:
Auf Variablen kann erst zugegriffen werden, nachdem sie referenziert wurden. Greift man auf nicht deklarierte Variablen zu, dann fliegt ein Fehler.
jQuery verwendet die Variable $, schreibt man nun ein jQuery Plugin so greift diese auf $(".meinElement").addClass() zu, was natürlich erst existiert, nachdem jQuery geladen wurde.

Man muss das Javascript für das Plugin erst aufrufen, nachdem jQuery geladen wurde, dann ist $ auch für jQuery definiert. Vielleicht ist das Plugin so schlampig geschrieben, dass es zwingend inline Javascript verwendet?
Dann müsstest du das inline JS auslagern und in ein separates JS-File geben.

Edit: ad "Ich dachte, dass durch das "späte" Laden von Javascript nur einfach der normale Seitenaufbau beschleunigt werden soll"
Ja, er wird deshalb beschleunigt, weil: Trifft ein Browser auf eine .js Datei dann lädt er die erstmal runter. Ist er damit fertig, schaut er, was danach kommt. Das, was in der JS Datei steht, wird auch gleichzeitig ausgeführt und interpretiert. Fügst du die Dateien erst am Ende ein, dann wird das parsen der .js-Datei erst gemacht, nachdem das gesamte HTML da ist. Dem User fällt es dann nicht mehr auf, dass der Browser im Hintergrund noch weiter rechnet.

Edit 2:
Auch hier wieder der Hinweis auf die Konsole der Browser Entwicklertools, dort solltest du das sofort sehen. Verwendest du diese eigentlich?
Okay, danke für den Tipp. Tatsächlich wurde ein Inlineskript im Head eingefügt. Wenn ich das in meine eigene JS-Datei einfüge, die ich erst nach dem jQuery aufrufen lasse, funktioniert alles.

Und ja, ich schau in die Konsole. Meistens...


Cheers,
Mops
Mit Zitat antworten
  #4 (permalink)  
Alt 12.04.2017, 13:59
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 30.01.2014
Beiträge: 1.631
cloned ist ein sehr geschätzer Menschcloned ist ein sehr geschätzer Menschcloned ist ein sehr geschätzer Mensch
Standard

Zitat:
Zitat von GeneralMops Beitrag anzeigen
Und ja, ich schau in die Konsole. Meistens...
Es ist für Leute, die dir helfen wollen, sehr hilfreich zu wissen, was deine Konsole alles ausspuckt. Deshalb das bitte immer in deinen Beiträgen dazuschreiben
Mit Zitat antworten
  #5 (permalink)  
Alt 13.04.2017, 08:19
Benutzerbild von inta
free as in freedom
XHTMLforum-Kenner
 
Registriert seit: 04.12.2006
Ort: Berlin
Beiträge: 5.011
inta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz sein
Standard

Zitat:
Zitat von GeneralMops Beitrag anzeigen
Aus Performancegründen wird ja immer wieder empfohlen, die Javascripte am Ende der Seite aufzurufen.
Die Empfehlung ist leicht veraltet. Da mittlerweile alle gängigen Browser das defer-Attribut unterstützen, ist es sinnvoller die Javascript-Dateien mit ebendiesem im head zu laden. Der Seitenaufbau wird dadurch nicht mehr blockiert, die Javascripte werden noch während des parsens geladen (also früher, als wenn du die Skripte am Ende des body einbindest) und in der richtigen Reihenfolge ausgeführt und das erst wenn das DOM fertig ist. Ein weiterer Vorteil ist, dass die Skripte parallel geladen werden.

Das Attribut kann allerdings nur bei externen Skripten verwendet werden (was aber der Standard sein sollte).

Hier gibt es eine Grafik die das Ladeverhalten veranschaulicht. (Der Beitrag selbst ist alt.)
Mit Zitat antworten
  #6 (permalink)  
Alt 13.04.2017, 08:45
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 30.01.2014
Beiträge: 1.631
cloned ist ein sehr geschätzer Menschcloned ist ein sehr geschätzer Menschcloned ist ein sehr geschätzer Mensch
Standard

https://developers.google.com/speed/...eferJavaScript
Mit Zitat antworten
  #7 (permalink)  
Alt 13.04.2017, 11:33
Benutzerbild von inta
free as in freedom
XHTMLforum-Kenner
 
Registriert seit: 04.12.2006
Ort: Berlin
Beiträge: 5.011
inta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz sein
Standard

Es ist mir vollkommen unklar was du mit dem Link sagen willst. Der Inhalt ist in einem Punkt sogar falsch, die Skripte werden parallel geladen, lediglich die Ausführung ist sequentiell. Falls das nicht gewünscht ist, gibt es das async-Attribut. Beides ist meiner Meinung nach sinnvoller als die Skripte ans Ende vom body zu hängen.
Mit Zitat antworten
  #8 (permalink)  
Alt 13.04.2017, 11:38
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 30.01.2014
Beiträge: 1.631
cloned ist ein sehr geschätzer Menschcloned ist ein sehr geschätzer Menschcloned ist ein sehr geschätzer Mensch
Standard

Verzeih für den vorhin kommentarlosen Einwurf des Links, der soll lediglich der Zusatzinformation dienen. Du darfst gerne an google schreiben, dass sie hier einen Fehler in ihrer Dokumentation haben, alles habe ich im Detail nicht durchgelesen.
Mir ging es eher darum, dass es auch Risiken bergen kann wenn man nicht aufpasst, bzw. Skripte nicht wirklich ordentlich geschrieben sind. Was bei plugins ja leider manchmal der Fall ist. Das nur als Info, falls man sich für defer entscheidet und etwas plötzlich nicht funktioniert, damit man weiß, wieso das passieren kann.
Mit Zitat antworten
  #9 (permalink)  
Alt 13.04.2017, 11:46
Benutzerbild von inta
free as in freedom
XHTMLforum-Kenner
 
Registriert seit: 04.12.2006
Ort: Berlin
Beiträge: 5.011
inta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz sein
Standard

Ok, zu Problemen dürfte es wohl in der Regel nur beim Einsatz von document.write kommen und das wird wohl hoffentlich nicht eingesetzt.
Mit Zitat antworten
Sponsored Links
Antwort

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
anstelle des a href jquery zum laden verwenden irmen Javascript & Ajax 16 31.10.2012 16:27
Content laden mit jQuery erxx Javascript & Ajax 13 21.10.2011 12:46
jQuery: IMG mit Klasse nicht laden? alsodenn Javascript & Ajax 5 13.01.2011 13:28
jQuery: Funktion beim Seitenaufruf laden Twyxx Javascript & Ajax 1 25.03.2010 19:57
JQuery: Datei in Container laden crossgolfer85 Javascript & Ajax 3 18.06.2009 14:38


Alle Zeitangaben in WEZ +2. Es ist jetzt 16:09 Uhr.