"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

problem mit variablenweitergabe an flash

flocky 26.04.2004 - 20:45 458 5
Posts

flocky

sn0wner (analphabet)
Avatar
Registered: May 2002
Location: life-compiler
Posts: 1663
hallo

folgender code:

Code:
<HTML>
<HEAD>
<TITLE>OARSCH</TITLE>
</HEAD>
<BODY bgcolor="#FFFFFF">

<script language=javascript>
function passflash(play)
{
window.document.oarsch.SetVariable("oarsch",play);
}
</script>

<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
 codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0"
 WIDTH="550" HEIGHT="400" id="oarsch" ALIGN="">
 <PARAM NAME=movie VALUE="OARSCH.swf" swLiveConnect=true>
 <PARAM NAME=quality VALUE=high>
 <PARAM NAME=bgcolor VALUE=#FFFFFF>
 <EMBED src="OARSCH.swf" quality=high bgcolor=#FFFFFF  WIDTH="550" HEIGHT="400" NAME="OARSCH" ALIGN=""
 TYPE="application/x-shockwave-flash" PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer"></EMBED>
</OBJECT>

<a href="#" onMouseUp="javascript:passflash('1');" onMouseOver="passflash('2');">boano</a>

</BODY>
</HTML>

window.document.oarsch.SetVariable("oarsch",play); gibt die variable "oarsch" mit dem wert "play" an die instanz des embedded flash-movies weiter, in flash wird die variable einfach mit _root.oarsch geprüft, funzt alles im IE super aber opera macht probleme, er movie stoppt nicht wie lt. if-condition sollte.
hat jemand ideen welche restriktionen opera in der richtung hat?

Rektal

Here to stay
Registered: Dec 2002
Location: Inside
Posts: 4452
onmouseup="javascript jedenfalls falsch, hier gehoert kein javascript: hin .. gehoert genauso wie onmouseover.

Moeglicherweise ist document.oarsch in Opera nicht definiert? alert(document.oarsch) ? Hier gehoert document.getElementById('oarsch').<etc.etc.> hin. Eigentlich.

flocky

sn0wner (analphabet)
Avatar
Registered: May 2002
Location: life-compiler
Posts: 1663
ok also javascript: weg hat keine änderung gebracht, btw: wozu schreibt man das eigentlich manchmal hin?
ob onMouseUp oder Over is eigentlich egal, es geht nur um den event.
documentgetelementbyid dachte ich auch, hat auch nix gebracht, beim altert gibts keine ausgabe.

Rektal

Here to stay
Registered: Dec 2002
Location: Inside
Posts: 4452
Wenns beim alert() keine Ausgabe gibt, dann ist reflektiert es quasi das unter document.oarsch nunmal nicht im Document-Tree ist. Desshalb nimmst du document.getElementById, damit findest du es.

javascript: ist ein sog. Pseudo-Handler, wurde nur in HREF-Attributen verwendet, ist ein relikt aus NS4 Zeiten, denke ich mal. Heutzutage verwendet man einfach onklick/onmouseover/onmouseout etc., das sind schon die Javascript-Handler, da rein kommt nur javascript-Code, kein javascript: Pseudo-Protokoll-Handler

flocky

sn0wner (analphabet)
Avatar
Registered: May 2002
Location: life-compiler
Posts: 1663
mit getelementbyid gehts im IE genau so, in opera wieder nicht...
danke für die erklärung, also kann ich mir das in zukunft ersparen. apropos ersparen, wann muss ich die <script...> tags setzen und wann nicht?

Rektal

Here to stay
Registered: Dec 2002
Location: Inside
Posts: 4452
Moeglicherweise liegt das Problem daran, das Opera, warum auch immer, das Flash Object nicht einfach so scripten kann/laesst.

Wie du vielleicht selber siehst, wenn du onmouseover/onclick setzt, bearbeitest du direkt ein Event eines Objekets, d.h. du gehst davon aus, wenn der Benutzer seine Maus ueber das Element faehrt, wird dein Javascript-Code beim eintreten des Events ausgefuehrt.

Bei <script> definiertst du einfach nur Javascript code, der unter Umstaenden gar nicht gleich ausgefuehrt wird, weil du ihn spaeter brauchst.

Beispiel
Code:
<a href="url.html" onclick="window.open(this.href, 'popup', ''); return false;">Link</a>

oder

Code:
<script>
  function openPopup(href) {
    window.open(href, 'popup', '');
    return false;
  }
</script>
...
<a href="url.html" onclick="return openPopup(this.href);">Link</a>
D.h. du definiertst im Script einmal Funktionen, die du beliebig oft ausfuehren kannst, ohne sie jedesmal neu zu definieren. Ist schon praktisch wenn es komplexere Sachen sind.

Idealerweise wird im head einmal ein <script>-Tag definiert, das ein externen Javascript laedt, das alle benoetigten Funktionen definiert. So kann das *.js auch noch gecached und die HTML-Seiten werden kleiner.
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz