Gelöst Manipulation des DOM nach dem es vollständig geladen wurde (jQuery Plugin Initialisierung)

OmKFJ

Aktives Mitglied
2. August 2016
22
0
Hi,

mein selbstentwickeltes jQuery Plugin include ich mittels der info.xml Datei:

XML:
<JS>
    <file>
        <name>foo.js</name>
        <priority>10</priority>
        <position>body</position>
    </file>
</JS>

Ich benutze den HOOK 140 "HOOK_SMARTY_OUTPUTFILTER" um mittels den phpQuery eine zusätzliche JS-Datei aufzurufen/einzubinden um das jQuery Plugin zu initialisieren:

PHP:
pq("footer")->append("<script src=\"" . $oPlugin->cFrontendPfadURL . "template/init.js" . "\"></script>");

JavaScript:
$( "#content" ).foobarPlugin( {
    value: "foo"
} );

Das Problem dabei ist, dass die initialisierung vor dem jQuery include passiert, was darauf hin die Console mir den Fehler ausgibt:
Uncaught TypeError: $(...).foobarPlugin is not a function

Wie regelt man sowas?
 

NETZdinge.de

Sehr aktives Mitglied
7. April 2010
2.473
365
Das Problem ist, dass die ganzen Skripte selbst erst im footer gesetzt werden... wahrscheinlich bist du da einfach schneller… Versuche es mal mit einen Window.Timeout von 200ms
 

OmKFJ

Aktives Mitglied
2. August 2016
22
0
Das Problem ist, dass die ganzen Skripte selbst erst im footer gesetzt werden... wahrscheinlich bist du da einfach schneller… Versuche es mal mit einen Window.Timeout von 200ms
Hi, danke für die Antwort.
Ein timeout würde das Problem lösen, jedoch ist das meiner Meinung nach ein workaround und etwas was sehr unpräzise ist. Beispielweise wenn die Seite unter Mobile länger braucht um zu laden, würde es ja nicht mehr funktionieren. Es gibt auch andere Gründe, die gegen ein timeout sind. Eine andere Möglichkeit?
 

FPrüfer

Moderator
Mitarbeiter
19. Februar 2016
1.881
527
Halle
Die Scripte aus der info.xml werden nicht im footer, sondern ganz am Ende des body geladen. Mit einem
PHP:
pq('body')->append('<script>jtl.load(["' . $oPlugin->cFrontendPfadURL . 'template/init.js' . '"]);</script>');
sollte es also auch funktionieren, wenn dein Plugin über die info.xml eingebunden wird.
 
  • Gefällt mir
Reaktionen: OmKFJ
Ähnliche Themen
Titel Forum Antworten Datum
Kunde haut mir die E-Rechnung um die Ohren. Länge des BT-131 sollte 2 Nachkommastellen haben JTL-Wawi 1.9 5
Neu Ständig wiederkehrender Fehler beim Ableich des Lister 2.0 Amazon-Lister - Fehler und Bugs 5
Neu Ausschalten des Menü Servicedesk und des Buttons in der WaWi User helfen Usern - Fragen zu JTL-Wawi 1
Neu Ändern des Dokumententitels oder andere Wege der Datenübergabe in das Dokument hinein für Artikeletiketten. Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 3
Neu SEO-Weiterleitung im Backend auf Startseite des Shops Umstieg auf JTL-Shop 2
Neu Offizielle Vorstellung des CSS Formular- und Retouren-Manager Plugins für JTL-Shop 0
Artikelübersicht - in Aufträgen - "Firma" fehlt weiterhin - nur der Name des Ansprechpartners wird angezeigt JTL-Wawi 1.10 4
Neu neue Sendungsnummer (DHL) wird nach Storno des 1. Label nicht an Amazon übergeben JTL-ShippingLabels - Fehler und Bugs 9
Neu Anzeige des Lagerbestands unter "Verknüpfte Artikel" wird nicht aktualisiert JTL-Wawi - Fehler und Bugs 4
Neu Gibt es eine Möglichkeit im On Page Composer einen Entwurf als Vollbild zu sehen? Ohne die Menüleiste des Editors nebendran? User helfen Usern - Fragen zu JTL-Wawi 6
Neu JTL WMS Installation, Wahl des richtigen Lagerplatztypen und Ablauf Installation von JTL-WMS / JTL-Packtisch+ 4
Neu Auswahl des Lagers ohne Funktion Allgemeine Fragen zu JTL-Shop 4
Neu Mindestzeichenanzahl des Suchbegriffs lässt sich nicht verändern JTL-Shop - Fehler und Bugs 3

Ähnliche Themen