Eventuell Fehler mit embed - Tag

Martin78

Grünschnabel
Hallo,

ich habe ein kleines Problem mit einem embed-Tag. Also ich denk mir mal das es dass Problem sein könnte. Aber kurz zur Erläuerung.
Ich versuche mich gerade (also Neuling) PHP, JavaScript, Flash in Verbindung mit Ajax einzuarbeiten. Dazu habe ich zur Übung (aus einem Buch) eine HTML-Seite gebastelt (Name: flash_zugriff.html) die eine zuvor gebastelte *.swf - Datei aufruft (sorry: mit javascript einbindet). Wenn ich dann auf meiner HTML-Seite auf eine Button klicke ("Daten senden"), soll in der *.swf-Datei eine Variable einen neuen Wert zugewiesen werden. Doch irgendwie funktioniert das nicht. Wenn ich meine Html-Seite aufrufe, wird auch die *.swf-Datei angezeigt aber wenn ich auf meinen Button klicke passiert nicht.
Überprüfe ich in Dreamweaver meine HTML-Seite mit "Aktuelles Dokument überprüfen" gibt er mir den Fehler aus:

flash_zugriff.html 66 Der Tag-Name: "embed" wurde in der derzeitig aktiven Version nicht gefunden. [XHTML 1.0 transitional]

Hab schon den ganzen Tag mit Fehlersuchen verwendet. Weiß aber nicht wie ich das Problem lösen kann. Ich bin auch der Meinung das, wenn er mir die .swf-Datei im Browser anzeigt (verwende Firefox 2.0.0.15) das er über den embed-Tag schon längst hinaus ist, oder täusche ich mich da? Aber woran liegt es dann?

Wenn ihr mir helfen könnte würde ich mich sehr freuen.

Hier ist erstmal der Code. Ich kann mir nicht vorstellen das ich mich verstnändlich ausgedrückt habe ;-)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Browser an Flash</title>

<style type="text/css">
<!--
div#container {
position:absolute;
width:800px;
height:500px;
left:50%;
top:50%;
margin-left:-400px;
margin-top:-250px;
border:1px dotted #ed1c1c;
padding:10px;
}
-->
</style>


<script language="javascript" type="text/javascript">

function getFlashElement(elem){

var app = navigator.appName.toLowerCase();
var nav = navigator.userAgent.toLowerCase();

if((app.indexOf("microsoft") != -1 || nav.indexOf("microsoft") != -1) && !Boolean(window["opera"])){
return document.all[elem];
}
else{
return document.[elem];
}
}


function sendDataToFlash(){

var myswf = getFlashElement("myswf");
myswf.SetVariable("myVar", "EXPLODE");
}
</script>

</head>

<body>
<div id="container">
<h1>Browser an Flash - Variante 1</h1>
<div id="Flash">
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase= "http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" width="300" height="300" id="myswf">

<param name="movie" value="uebung_1.swf" />
<param name="quality" value="high" />

<embed id="myswf" name="myswf" src="uebung_1.swf" width="200" height="150" quality="high"
pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash">
</embed>
</object>

</div>

<div id="SendButton">

<form name="frmSetVariable" id="frmSetVariable" method="post" action="">
<input type="button" value="Daten senden" onclick="sendDataToFlash();" />
</form>

</div>
</div>

</body>
</html>


Danke schon mal im voraus für eure Hilfe und schönes WE noch. Falls ihr noch fragen habt zu meinem Thema "Browser an Flash" beantworte ich sie euch gerne.

Grüße Martin
 
Moin,

da sind in der Tat mehrere Fehler drin :-)

Bevor ich aber als nicht-Flasher um den heissen Brei herumrede, hier mal ein Link, wo alles gut erklärt ist :)
http://www.permadi.com/tutorial/flashjscommand/

Ums kurz zu Fassen:
Du hast ein <object>-Element, und in diesem wiederum ein <embed>-Element.

Der IE muss auf <object> zugreifen, andere Browser auf <embed>.

Um dies eindeutig tun zu können, gebe dem <object> die id "myswf" und dem <embed> das name-Attribute "myswf" ...und nur so, nicht beiden beides geben, so wie du es jetzt hast.

Für den Zugriff findest du dort statt deiner Funktion getFlashElement() die Funktion getFlashMovieObject()....nimm besser die von dort ;)

Dann noch wichtig:
im <embed> muss folgendes stehen:swliveconnect="true" ...erst dieses Attribut ermöglicht die Kommunikation zwischen Flash und Javascript.

Die Dreamweaver-Meldung kannst du ignorieren, die soll nur darauf hinweisen, dass das <embed>-Element nicht zum DOCTYPE passt, aber damit musst du leben, denn <embed> passt zu überhaupt keinem (X)HTML-Doctype.
 
Danke Sven,

für deine schnelle Antwort. Werde es heut Abend gleich mal ausprobieren.

Grüße und schöne Woche Martin
 

Neue Beiträge

Zurück