Das Parameter Value in Object-Tag von Flash per JavaScript ansprechen

messmar

Erfahrenes Mitglied
Hallo,

wie kann ich das Value eins Object-Tag für einen Falsh-Film per Javascript ändern, so dass
man per Click auf einen Link den Film austauschen kann.

Mein Versuch sieht flgendermaßen aus, aber es funkz. nicht:

in die Html-Seite:
HTML:
<div id="carRandom">
					<script type="text/javascript" language="JavaScript">
						document.write('<object id="xxxTest" width="283" height="146" data="img/car-mini_1.swf" type="application/x-shockwave-flash">');
						document.write('<param name="movie" value="img/car-mini_1.swf">');
						document.write('</object>'); 
					</script>
				</div>

Und in die externe Javascript-Datei Folgendes:

var flashMovie;
function addFlash(movie){

flashMovie = new Object();
flashMovie.value = 'img/' + movie;
document.getElementById('xxxTest').value = flashMovie.value;
}

Vielen Dank und Gruß
Messmar
 
Hallo,

ich habe es jetzt folgendermaßen gemacht:

Ich erstelle ein Object-Tag anhand JavaScript und da füge den Film-Namen ein.
Aber das Problem ist, dass es jedes Mal beim anklicken des Links, ein neues Object erstell bzw. generiert wird.
HTML:
var flashMovie;
function addFlashPerCreate(film){

  var obj = document.createElement("object");
  var prm = document.createElement("param");
  obj.id = "xxxTest";
  obj.width = "283";
  obj.height = "146";
  obj.data = 'img/' + film;
  obj.type = "application/x-shockwave-flash";
  prm.name = "movie";
  prm.value = 'img/' + film;
  
  obj.appendChild(prm);
  document.getElementById('carRandom').appendChild(obj);
}

Ich will aber erreichen, dass das vorhanden Objekt-Tag, einfach einen neuen Flash-Movie bekommt.

Wie kann es aber erreichen, den Wert des Value-Parameter vorher zu löschen und dann anschließend wieder zu generieren aber mit dem neun Film.

Das geht, soweit ich weiß mit DOM, aber ich komme nicht darauf.

Kann Jemand bitte weiter helfen?

Noch Mal vielen Dank und Gruß
Messmar
 
Hi,

ich habe es jetzt gelöst, aber unter IE, schein zu sein als wäre der Flash-Movie nicht
gefunden.

Meine Lösung:

HTML:
function removeChildNodes(){
	var d = document.getElementById("carRandom"); 
	var d_nested = document.getElementById("xxxTest"); 
	var throwawayNode = d.removeChild(d_nested);
}


function addFlashPerCreate(film){
  
  removeChildNodes();
  
  var obj = document.createElement("object");
  var prm = document.createElement("param");
  obj.id = "xxxTest";
  obj.width = "283";
  obj.height = "146";
  obj.data = 'img/' + film;
  obj.type = "application/x-shockwave-flash";
  prm.name = "movie";
  prm.value = 'img/' + film;
  
  obj.appendChild(prm);
  document.getElementById('carRandom').appendChild(obj);
}

Noch eine Idee?

Danke und Gruß
Messmar
 
hiermit gehts bei mir:
Code:
function addFlash(film)
{
  film='img/' + film;
  swfObj=document.getElementById('xxxTest');
  cloneObj=swfObj.cloneNode(false);
  cloneObj.setAttribute('data',film);
  paramObj=document.createElement('param');
  paramObj.setAttribute('name','movie');
  paramObj.setAttribute('value',film);
  cloneObj.appendChild(paramObj);
  swfObj.parentNode.replaceChild(cloneObj,swfObj);
}
 
Hallo Sven

Vielen Dank. Es funkz. mit dieser Funktion ;-)

ich bin schon auf die Idee gekommen, die ganze Sache mit replaceChild und setAttribute zu lösen, aber offen gesagt, ich wusste nicht wo ich genau anfangen soll.

Aber jetzt habe ich wieder was gelernt und die User hier hoffe ich auch.

Aber könntest Du bitte so nett sein und mir die Zeile hier erklären:

HTML:
cloneObj=swfObj.cloneNode(false);

Ich habe Alles verstanden (Ist ja auch nicht schwer ;-))

Danke und Gruß
Messmar
 
Zuletzt bearbeitet:
Hallo Sven,

Ich habe bezüglich der clodeNode( ) Methode in SelfHtml Einiges gefudne und zwar mit Beispielen.

Und damit hat sich meine Frage in dem vorherigen Posting erledigt.

Gruß
Messmar
 
Tach auch,
ich bin ein Neuling hier, lese allerdings schon geraume Zeit mit.
Mein Kleinhirn wandert aus: ich kann das Schript, das hier geschrieben steht, nachvollziehen , aber warum t das so bei mir nicht?ignoriert den php-Part, es geht nur ums JS

<?php
$adr=$_GET['adr'];
$artist=$_GET['artist'];
$songtitle=$_GET['songtitle'];
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
<title>Untitled</title>
<script language="JavaScript1.2" type="text/javascript">
function addFlash(film)
{
var film =film+".swf";
swfObj=document.getElementById('flashfilm');
cloneObj=swfObj.cloneNode(false);
cloneObj.setAttribute('data',film);
paramObj=document.createElement('param');
paramObj.setAttribute('name','movie');
paramObj.setAttribute('value',film);
cloneObj.appendChild(paramObj);
swfObj.parentNode.replaceChild(cloneObj,swfObj);
}
</script></head>

<body>
<object id="flashfilm" data="xspf_player_slim.swf?song_url=<? echo $adr ?>&song_title=<? echo $artist ?>&player_title=<? echo $songtitle ?>" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0"
width="90%" height="15" >

<param name="allowScriptAccess" value="sameDomain"/>
<param name="movie" value="xspf_player_slim.swf?song_url=<? echo $adr ?>&song_title=<? echo $artist ?>&player_title=<? echo $songtitle ?>"/>

<param name="quality" value="high"/>
<param name="bgcolor" value="#E6E6E6"/>
<embed src="xspf_player_slim.swf?song_url=<? echo $adr ?>&song_title=<? echo $artist ?>&player_title=<? echo $songtitle ?>"
quality="high" bgcolor="#E6E6E6" name="xspf_player" allowscriptaccess="sameDomain"
type="application/x-shockwave-flash"
pluginspage="http://www.macromedia.com/go/getflashplayer"
align="center" height="15" width="90%">
</embed>
</object>

</body>
</html>

der Funktionsauftruf erfolgt über

javascript:addFlash('xspf_player_slim')

Danke für Eure Hilfe
 
Spielt dein Player denn im Normalfall überhaupt etwas, wenn er per URL nicht die nötigen Parameter übergeben bekommt(adr,artist,songtitle)...diese fehlen bei deinem Funktionsaufruf?
 
Ja, das tut er, bzw. er wird zumindest dargestellt.
Wenn ich den Player aber wie im Script modifizieren will, erscheint er nicht mehr
Gruß, Pitter
 

Neue Beiträge

Zurück