jQuery zusammen mit Third-Party JavaScript Bibliotheken einsetzen
Im Rahmen eines Einsatzes bei der Internet-Agentur Scholz & Volkmer stieß ich auf ein Problem, jQuery parallel zu der JavaScript Bibliothek Prototype zu benutzen.
Der Internetauftritt eines Kameraherstellers, der erweitert werden sollte, wurde über das CMS Silverstripe verwaltet, was wiederum auf dem OpenSource MVC-Framework Sapphire aufsetzt. Hier wurde nun ein Modul integriert, über das eine Bildergalerie implementiert wurde.
Diese Bildergalerie und insbesondere ihre Effekte setzten auf dem JavaScript Framework Prototype auf. Außerdem gab es noch eine Animation in der Hauptnavigation der Webseite, die über die JavaScript Bibliothek mootools realisiert wurde. Hier lag das Problem: mootols kann nicht ohne weiteres parallel zu dem Framework Prototype benutzt werden. Es gibt eine Möglichkeit mootols im Zusammenspiel mit Prototype zum Laufen zu bringen, die allerdings in diesem speziellen Fall nicht funktionierte. Es gab noch die Möglichkeit, die Menüanimation von mootools auf Prototype zu portieren, was allerdings auch nur mit einem nicht unerheblichen Aufwand zu realisieren gewesen wäre.
Also griff ich auf eine andere Möglichkeit zurück und bediente mich der JavaScript Bibliothek jQuery um die Menüanimation zu implementieren. Diese Bibliothek funktioniert jedoch ebenfalls nicht 'out of the box' mit Prototype. Schnell wurde ich auf jQuerys 'noConflict()'-Mode aufmerksam, der es ermöglicht jQuery parallel zu anderen JavaScript Bibliotheken einzusetzen.
Hier hat man die Möglichkeit, die $-Funktion in jQuery zu überladen und mit dem ursprünglichen Bibliotheksaufruf 'jQuery' zu arbeiten. Somit entgeht man den Konflikten, die entstehen, wenn Drittbibliotheken ebenfalls eine Funktion namens '$' benutzen, wie es auch bei Prototype der Fall war.
Mit dieser Option war es nun möglich, die Menüanimation auf jQuery zu portieren, ohne Funktionalität einzubüßen oder das Galeriemodul des CMS modifizieren zu müssen.