Javascript-Probleme bei Modulen

Nach einem Upgrade auf die neueste WBCE Version 1.6.5 funktionieren einige Module eventuell nicht mehr richtig. Der Fehler ist meist der Gleiche und einfach zu fixen.

Mit WBCE 1.6.5 änderte sich das Javascript-Framework  jQuery deutlich. War in WBCE 1.6.4 noch jQuery v2.2.4 beigepackt, wird nun jQuery v3.7.1 geladen. Das kann Probleme machen.

Ein recht typischer Fehler tritt bei $(window).load(function() { ... }); auf

Diese Zeile steckt zb in:
/modules/topics/picupload/modify_thumb.js (Beschneiden der Bilder)
/modules/globalupload/kram/pic-crop.js (Beschneiden der Bilder)
/modules/teasers/frontend.js (FadeIn beim Scrollen)
(to be continued... da gibt es sicher noch mehr)

Fix:
Ersetze

$(window).load(function()

durch:

$(window).on('load', function()

 

Danach wirst du kräftig Neuladen müssen, damit das geänderte Script geladen wird.  In den meisten Browsern: Strg-Shift-F5
Alternativ kannst du die Scripte direkt im Browser öffnen, um sie neu zu laden: Deine Website + URLs wie oben.

Die alte jQuery-Version einspielen

Das ist natürlich auch eine Möglichkeit, aber das vertagt das Problem nur.

Ursachenforschung

Das Problem liegt daran, dass .load() als Event-Shortcut (zusammen mit .unload() und .error()) in jQuery Version 3.0 offiziell entfernt wurde. Darum führt dieser Aufruf schlichtweg zu einem JavaScript-Fehler, und der Code darin wird nie ausgeführt.

Anders als bei PHP gibt es bei jQuery keine [DEPRECATED] - Meldungen, die Entwickler schon lange vorwarnen; bei jQuery funktioniert es dann einfach nicht mehr. Nicht jeder Entwickler denkt an alles und so manches Script, das jahrelang unauffällig seinen Dienst tat, verweigert nach dem Upgrade.

Zurück