• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Funktion außerhalb einer js-Datei überschreiben

Hallo,
ich verwende auf meiner Homepage ein 3D-Karussell, bei dem ich eine Funktion in der js-Datei geändert habe, um meine Lightbox triggern zu können.
Dies ist die js-Datei:
http://www.ulrichbangert.de/js/jquery.cj-carousel.js
Die Funktion, die ich geändert habe, ist gotoURL().
Meine Frage ist jetzt, ob ich diese Funktion außerhalb der js-Datei überschreiben kann, damit ich nicht bei jedem Update meine Änderung neu einbringen muss.
Viele Grüße - Ulrich
 
Zuletzt bearbeitet:
Ich wüsste nicht wie das gehen soll, seidenn das 3D-Karussell bietet sowas an. Eigentlich kennt Javascript nämlich keine Vererbung o.ä.
 
Du kannst die Funktion nicht überschreiben, da die in einem separatem Scope definiert ist, auf den du nur hier zugreifen kannst.

@rico2009: ich verstehe gerade nicht, was Vererbung mit dem Problem zu tun hat? Außerdem kann man die prototype-Kette als eine Art Vererbung ansehen...
 
Soweit ich das sehe, musst du doch die gotoURL gar nicht ändern. Gib' deinen Elementen einfach kein data-url-Attribut und registrier' dir deine Click-Eventlistener selbst, dann sollte das eigentlich komplett unabhängig von dem Teil funktionieren.
 
Das ist eine gute Idee, danke! Werde ich ausprobieren, wenn das nächste Update kommt.
Edit: Hab's doch gleich mal eingebaut und es funktioniert einwandfrei!
 
Zuletzt bearbeitet:
Neue Frage: Ich habe noch eine andere js-Datei, bei der ich das gleiche Problem habe: Ich müsste die Funktion toggleControls() überschreiben. Dieser Code ist etwas anders aufgebaut, so dass ich wieder die Frage stellen möchte, ob ich diese Funktion außerhalb der js-Datei überschreiben kann.
http://www.ulrichbangert.de/js/blueimp-gallery.js
Die Galerie wird wie folgt aufgerufen:
Code:
document.getElementById('links').onclick = function (event) {
                    event = event || window.event;
                    var target = event.target || event.srcElement,
                    link = target.src ? target.parentNode : target,
                    options = {index: link, event: event},
                    links = this.getElementsByTagName('a');
                    blueimp.Gallery(links, options);
                  };
 
Hier hast du keine locale Variable/Funktion, die du überscheibst, sondern eine Prototype-Methode.

Die kannst du ganz einfach überschreiben:
Code:
blueimp.Gallery.prototype.toggleControls = function(){/*was auch immer*/}
kannst du auch in eine separate Datei packen.

PS: dir ist hoffentlich klar, dass du eigentlich den "new"-Operator vergessen hast...
 
Das ist ja super, vielen Dank! Funktioniert einwandfrei.
Den Code habe ich aus der Anleitung dieser Lightbox. Wo gehört das new denn hin, so:
Code:
document.getElementById('links').onclick = function (event) {
                    event = event || window.event;
                    var target = event.target || event.srcElement,
                    link = target.src ? target.parentNode : target,
                    options = {index: link, event: event},
                    links = this.getElementsByTagName('a');
                    var lb = new blueimp.Gallery(links, options);
                  };
?
 
Bitte - gern geschehen.

Ja, das "new" gehört da hin. Spart dir so hald einen Funktionsaufruf, da die Instanz sonst in blueimp.Gallery erzeugt wird.
 
Zurück
Oben