Hotspot onclick="js(...)" funktioniert nicht. Kontextproblem?

  • Hallo liebe Forumsgemeinde,

    ich schreibe momentan ein relative umfangreiches Javascript-Skript, was dynamisch Panoramen in einen Player laden kann und analog auch Hotspots dynamisch anlegt. Das funktioniert soweit so gut. In meinen Hotspots definiere ich eine Funktion im onclick-Attribut, die beim Click aufgerufen werden soll. Leider wirft die Konsole mir bei der Ausführung einen Reference Error mit dem Hinweis, dass die angegebene Funktion nicht definiert ist. Ich vermute ein Kontextproblem, habe aber keine wirkliche Lösung parat.

    Den gesamten Quellcode zu posten wäre unangebracht, deswegen schildere ich kurz die wichtigsten Funktionen, die die Sache tangieren:

    Die Grundlage meiner Applikation bildet ein Router-Objekt aus Backbone.js. Wird eine bestimmte Route "erreicht", so wird die Funktion

    embedPanoramaDummy(onReadyFunction)

    ausgeführt. Der Funktion wird die Referenz auf eine Funktion übergeben, die ausgeführt werden soll, sobald der Player erfolgreich initialisiert wurde. In der Funktion wird die Basismethode

    embedpano mit onReady : onReadyFunction

    aufgerufen. Im Javascript-Code erfolgt mein Aufruf folgendermaßen:

    embedPanoramaDummy(function() { panoramaReady(parameter); });

    Ich musste diesen Weg wählen, weil ich panoramaReady Parameter aus embedPanoramaDummy umgebenen Funktion des Routers übergeben muss. In der panoramaReady-Funktion wird

    setPanoramaByNodeId(panoramaNodeId)

    aufgerufen. Diese ruft wiederum eine

    setViewerXML(panorama, hotspots)

    auf. In dieser Methode wird das neue XML generiert. Darin befinden sich Hotspots, die folgendes beinhalten:

    onclick="js(onHotspotClick())"

    Nachdem das XML generiert wurde wird über mein Viewer-Objekt

    meinViewer.call("loadxml(...);")

    aufgerufen.

    Ich hoffe meine Schilderung war verständlich, sodass mir jemand helfen kann. Ich stehe natürlich für alle Fragen bereit und bedanke mich schon jetzt für den Support.

  • Ok ich konnte jetzt zumindest schon einmal herausfinden, dass das Problem offensichtlich an der Verwendung von require.js liegt.

    Das js() wird im obersten Kontext ausgeführt und sieht scheinbar nicht die Funktionen, die ich in meinem require-Modul habe.

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!