Gernot Back: readyState wird nur lokal gemeldet

Beitrag lesen

Hallo an alle,

vor einigen Tagen hatte ich mich ja schon einmal mit demselben Anliegen an einen bestehenden Thread drangehängt:

http://forum.de.selfhtml.org/archiv/2007/2/t145948/#m947109

Ich möchte im IE auslesen, ob ein Sound geladen ist, um eine Abspiel-Fortschittsanimation zu starten. Im IE möchte ich dabei den Sound über das BGSOUND-Element (oder ersatzweise über das DYNSRC-Attribut eines IMG-Elements) abspielen, weil die beide beim nahtloosen Loopen von Sounds einfach jedem Player, den man über EMBED- oder OBJECT-Element einbindet, überlegen sind.

Der Nachteil dabei: Den Start des Sounds kann ich nicht auslesen, weil das BGSOUND-Element überhaupt kein LOAD-Event feuert und das IMG-Element nur eines, das den LOAD-Status der im SRC-Attribut, nicht aber denjenigen der über das DYNSRC-Attribut referenzierten Datei medet.

Nun macht es Microsoft im IE bei Zuweisung eines Behaviors ja auch angeblich möglich, den readyStateChange eines BGSOUND-Elements melden lassen.

Lokal funktioniert das bei mir auch, und das meinem BGSOUND-Element zugewiesene Behavior meldet im Alert auch brav gleich immer den Status "complete".

<PUBLIC:ATTACH EVENT="onreadystatechange" ONEVENT="alertReadyState()" />
<SCRIPT LANGUAGE="JScript">

  
function alertReadyState() {  
   if (event.srcElement == element) {  
      alert(element.readyState);  
   }  
}

</SCRIPT>

Online würde ich ja beim Ändern des SRC-Attributs meines BGSOUND-Elements, wenn der IE die Sounddatei noch nicht in seinem Cache hat, vorher auch nacheinander noch die anderen Meldungen wie "loading", "loaded" und "interactive" erwarten.

http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/reference/properties/readystate_1.asp

Das SRC-Attribut lässt sich zwar auch online ändern und es spielt dann nach kurzer Ladezeit auch der andere Sound, aber es kommt dann noch nicht einmal die Meldung "complete", die ich lokal immer erhalte.

Ich habe die Rechte für die htc-Datei sogar schon auf 755, also ausführbar für alle Nutzer geschaltet, aber auch das half nichts.

Hat jemand von euch Erfahrung mit dem ReadyState? Was nutzt er mir, wenn er nur lokal funktioniert? Läuft er möglicherweise nicht auf linux-basierten Servern?

Gruß Gernot