Rolf B: Prüfen, ob eingebundenes Script fertig geladen ist und Youtube API onPlayerReady() wahr ist

Beitrag lesen

Hallo ebody,

$("dummy.js").ready(function{...})

Bitte erfinde keine Semantik, die nicht dokumentiert ist. Lies die jQuery Doku!

$(string) hat die Aufgabe, im DOM Elemente zu selektieren. $("dummy.js") würde also nach einem Element Element mit Tagname „dummy“ und der class "js" suchen. Das gibt's wohl eher nicht in deinem DOM, daher liefert $("dummy.js") ein leeres matched set.

Aber der .ready Funktion ist es wurscht, was im matched set drin ist. Sie registriert einfach einen Handler auf dem Dokument, der zuschlägt wenn das Dokument fertig geladen ist. Denn $(irgendwas).ready(function (){}) ist nur ein Alias für $(function() {}). Das „irgendwas“ ist ohne Bedeutung. Die Besonderheit von .ready im Vergleich zu selbstregistrierten Eventhandlern ist, dass jQuery sich merkt, dass das DOM im ready-Zustand ist. Wenn Du im ready-Zustand einen ready-Handler registrieren willst, wird er sofort ausgeführt. Deshalb: wenn Du .ready in .ready schachtelst, wird der Handler im inneren .ready einfach sofort aufgerufen.

test/dummy.js ist allerdings ein ungültiger Selektor - es gibt m.W. keinen / Kombinator. Deswegen mag es sein, dass das zu einem Abbruch des $() Aufrufs führt (oder null zurückkommt) und deshalb der vom Return-Wert abhängige ready-Aufruf nicht ausgeführt wird. Das müsste sich an an Hand von Console-Logeinträgen feststellen lassen.

Es ist aber auch piep-egal; $(dateiname) ist nichts, was in jQuery definiert wäre, diesen Weg brauchst Du nicht zu erkunden.

Hast Du den von mir vorgeschlagenen load Eventhandler registriert, bevor oder nachdem Du das Script-Tag an den Head gehängt hast? Es kann sein, dass man das tun muss, nachdem das Element im DOM ist; ich habe nur gerade keine Zeit um das zu verifizieren.

Was ich aber beim Nachlesen des .ready Verhalten gefunden habe (Lesen der Doku bildet!): Es gibt eine $.getScript-Funktion in jQuery. Dieser Funktion bietet einen Callback an, wenn das Script erfolgreich geladen wurde (ohne eine Zusicherung über die Reihenfolge, in der der Callback und das geladene Script ausgeführt werden).

$.getScript("dummy.js", function() {
   console.log("dummy.js ist geladen");
});

Rolf

--
sumpsi - posui - clusi