Bedingung zur ausführung von JS-Funktionen
bjoern
- javascript
0 wahsaga0 Gernot Back
0 Jörg Peschke
Hallo!
Ich habe eine Js-Funktion, die per onload im body-Tag aufgerufen wird. Sie soll per document.navigation.SetVariable("checkjs", "1");
dem Flashfilm mit der id "navigation" die Variable checkjs mit dem Wert 1 übergeben, damit im Film bekannt ist, dass JavaScript aktiviert ist.
Ist nun aber Das Ausführen von Plugins nicht erlaubt, ist SetVariable() ein ungültiges Parameter und es wird eine Fehlermeldung ausgeworfen.
FRAGE 1: Wie kann ich überprüfen ob unter der id "navigation" ein flashfilm geladen ist und nur dann die variable übergeben??
Sollte diese Abfrage nicht möglich sein, würde ich die Funktion nicht per onload sondern direkt aus dem Film aufrufen so das ich mir die Abfrage nach dem vorhandensein des Filmes sparen könnte.
Das Problem an der zweiten lösung ist, dass der IE damit probleme hat die Funktion checkjs() auszuführen wenn die seite noch nicht fertig geladen ist: er lädt nach erfolgreichem laden des flashfilmes die übrigen elemente nicht mehr weiter, sobald aus dem flashfilm die funkltion aufgerufen wurde.
in allen anderen browsern funktioniert ddas restliche laden der seite bestens.
FRAGE 2: gibt es hierfür eine möglichkeit, die funktion erst per Flash aufzurufen wenn die seite komplett geladen ist (eine art onload für flash?)
liebe grüße
björn
hi,
Ich habe eine Js-Funktion, die per onload im body-Tag aufgerufen wird. Sie soll per document.navigation.SetVariable("checkjs", "1");
dem Flashfilm mit der id "navigation" die Variable checkjs mit dem Wert 1 übergeben, damit im Film bekannt ist, dass JavaScript aktiviert ist.
also solltest du dir erst mal eine referenz auf das element mit der ID "navigation" besorgen (getElementById).
ein document.navigation steht dir nämlich nicht automatisch zur verfügung, nur weil es ein element mit dieser ID gibt.
Ist nun aber Das Ausführen von Plugins nicht erlaubt, ist SetVariable() ein ungültiges Parameter und es wird eine Fehlermeldung ausgeworfen.
SetVariable ist kein Parameter, sondern eine Methode.
FRAGE 1: Wie kann ich überprüfen ob unter der id "navigation" ein flashfilm geladen ist und nur dann die variable übergeben??
ob es das element mit der ID "navigation" gibt, prüfst du über die rückgabe von getElementById().
ob darin nun wirklich ein flash-film geladen wurde - schwieriger zu prüfen.
Sollte diese Abfrage nicht möglich sein, würde ich die Funktion nicht per onload sondern direkt aus dem Film aufrufen so das ich mir die Abfrage nach dem vorhandensein des Filmes sparen könnte.
das wäre ggf. sinnvoller.
Das Problem an der zweiten lösung ist, dass der IE damit probleme hat die Funktion checkjs() auszuführen wenn die seite noch nicht fertig geladen ist: er lädt nach erfolgreichem laden des flashfilmes die übrigen elemente nicht mehr weiter, sobald aus dem flashfilm die funkltion aufgerufen wurde. [...]
FRAGE 2: gibt es hierfür eine möglichkeit, die funktion erst per Flash aufzurufen wenn die seite komplett geladen ist (eine art onload für flash?)
k.A.
wenn nein - kannst du dort heraus eine einfache JS-variable setzen, ohne das der gleiche effekt auftritt? wenn ja, setze dir aus flash heraus ein JS-flag, welches du aus JS heraus per interval regelmäßig abprüfst.
gruß,
wahsaga
Hallo bjoern,
vielleicht interessiert dich zu dem ganzen Themenkomplex mein Artikel zu LiveConnect.
Gruß Gernot
Hallo,
Ich habe eine Js-Funktion, die per onload im body-Tag aufgerufen wird. Sie soll per document.navigation.SetVariable("checkjs", "1");
Du willst doch, dass der Flashfilm "weiss" ob JavaScript an ist oder nicht, oder?
Vermutlich hast du über folgende Lösung zu der Sache schon nachgedacht und für in deinem Fall als unsinnvoll befunden, aber vorsichtshalber schlag ichs doch mal vor:
Wieso bindest Du nicht den Flashfilm zweimal ein:
Einmal mit javascript über document.writeln() und dann mit dem Parameter "checkjs=1"
und einmal in einem <noscript>-Bereich mit dem Parameter checkjs=0.
also:
<script type ="text/javascript">
<!--
document.writeln(<object classid=.....');
//-->
</script>
<noscript>
<object classid=.... usw
...
</noscript>
Nur so ne idee.
Viele Grüße,
Jörg