• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Globaler Objektzugriff

NetAktiv

Senior HTML'ler
Hallo,

beim Studium von Shadowbox bin ich auf folgendes gestoßen:
  1. Mit <link> wird eine JS-Quelldatei eingebunden
  2. In der HTML-Datei muss man Shadowbox.init aufrufen.
  3. Es werden dynamisch DOM-Objekte erzeugt, deren onclick-Events andere Shadowbox-Methoden aufgerufen wie Shadowbox.next.
Mir wäre das klar, wenn in der JS-Quelldatei das Objekt Shadowbox als global definiert worden wäre, also wenn es da einen Eintrage gäbe wie

var Shadowbox = new MySecretObject();

Wieso kann man global auf dieses Objekt zugreifen, obwohl es aus meiner Sicht nirgends definiert wird?

Grüße, Rainer
 
Der Code scheint nur „minified“ angeboten zu werden. (Das heißt, der tatsächliche Code des Entwicklers wird vor Veröffentlichung durch ein Script geschickt, das ihn verkleinert und das dabei auch die Lesbarkeit stark erschwert.) Da lässt sich glaube ich nicht so ganz leicht eine Erkenntnis draus gewinnen.

Ich würde davon ausgehen, dass irgendwo in dem Wirrwarr ein entsprechendes „Objekt“ erzeugt wird.

Shadowbox Homepage vermutlich hier: http://www.shadowbox-js.com/
 
Der Code scheint nur „minified“ angeboten zu werden.... Da lässt sich glaube ich nicht so ganz leicht eine Erkenntnis draus gewinnen.

Hallo Marc,

ja ich habe diesen Wirrwarr :-? mit Notepad++ versucht zu entwirren und die Zeichen ; {} mit Zeilenvorschüben versehen. Aber sehr viel geholfen hat das nichts, auch wenn ich dann nur nach Begriffen 'shadowbox', 'new' oder 'var' suche. Da ich nichts entsprechende gefunden habe, dachte ich, eventuell wird ja die shadowbox.JS-Datei implizit als Objekt aufgefasst.

Grüße, Rainer
 
@struppi: Ich sehe keine Notwendigkeit, ich denke, das ist ein global verfügbares Objekt. Die Frage war, wie das erstellt wurde.
 
@struppi: Ich sehe keine Notwendigkeit, ich denke, das ist ein global verfügbares Objekt. Die Frage war, wie das erstellt wurde.
Die Frage war, warum du das denkst, dass es eines geben muss?
Aber stimmt, es gibt dieses globale Objekt, was aber nicht nötig wäre, der Code ist sowieso etwas - naja, wie soll ich sagen - rustikal. Also nicht besonders schön.

Um deine Frage zu beantworten, das globale Objekt wird an dieser Stelle definiert: window.Shadowbox=S

EDIT: und das S wird ganz am Anfang erzeugt: var S={version:"3.0.3"}
 
Zuletzt bearbeitet von einem Moderator:
Hallo ihr zwei, so im Nachhinein sieht das ganz einfach aus :-). Auf die Idee, dass man ein Objekt Q definiert und dann dieses Objekt einfach als Property mit Namen Shadowbox dem Windows-Objekt beifügt bin ich beim besten Willen nicht gekommen.
Grüße, Rainer
 
Zurück
Oben