mp3 aus Listenfeld starten

hermannhass

Mitglied
Hallo,
ich weiss zwar nicht, ob meine Frage in der richtigen Rubrik ist, aber ich versuche es mal hier:

Ich möchte auf meiner Seite (php) eine kleinen Audioplayer haben.
Ist mit
PHP:
<embed name="mpx' src="Audios/a002.mp3" width="32" height="32" ></embed>
eingebunden. Ferner habe ich eine Combolist(Listenfeld) mit ein paar MP3-Dateinamen.
Nun möchte ich bei Selektion eines eintrags diese MP3-Datei im player starten, d.h.eine andere, die evtl gerade läuft, soll erst beendet werden.
Wie bewerkstellige ich das am besten?
Ich arbeite mit Dreamweaver CS3
Grß
Hermann
 
Hi,

du könntest im onchange-Event des Selectfelds eine Funktion aufrufen, die den Player cloned. Dem neuen Objekt wird die neue mp3-Quelle zugewiesen und zum Schluss wird das bisherige Abspielobjekt durch das neue ersetzt.

Beispiel:
Code:
<html>
<head>
<title>www.tutorials.de</title>
<meta name="author" content="Quaese">
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<script type="text/javascript">
<!--
function changeSrc(strSrc){
  var objPlayer = document.getElementById("mpx").cloneNode(true);
  objPlayer.src = strSrc;
  document.getElementById("mpx").parentNode.replaceChild(objPlayer, document.getElementById("mpx"));
}
//-->
</script>
</head>
<body>
<select onchange="changeSrc(this.options[this.selectedIndex].value);">
  <option value="ynt_mean-streak.mp3">ynt_mean-streak.mp3</option>
  <option value="riot_swords-and-tequila.mp3">riot_swords-and-tequila.mp3</option>
</select>
<embed name="mpx" id="mpx" src="ynt_mean-streak.mp3" type="application/x-mplayer2" width="267" height="40" ></embed>
</body>
</html>
Vielleicht hilft dir das weiter.

Ciao
Quaese
 
  • Gefällt mir
Reaktionen: ink
Hallo Quaese,
Mensch Wahnsinn!
läuft auf Anhieb!
Danke besonders an Dich und an an die Leute, die diese tolle Forum betreiben
Sonnige Güße aus der Ferne (und Wärme)
Hermann
 
Hallo, gibt es eine möglichkeit das Script auch irgendwie auf in Verbindung mit "object" zu benutzen?

HTML:
<object
 classid="clsid:05589FA1-C356-11CE-BF01-00AA0055595A"
 id="player"
 height="45"
 width="250">
 
<param name="src" value="./lied.mp3" />
<param name="autostart" value="false" />

</object>
 
Hi,

versuch es mal mit folgender Funktion:
Code:
function changeSrc(strSrc){
  var objPlayer = document.getElementById("player").cloneNode(true);

  // Kindknoten des object-Elements durchlaufen
  for(var i=0; i<objPlayer.childNodes.length; i++){
    // Falls das erste param-Element gefunden wurde
    if(objPlayer.childNodes[i].nodeName.toLowerCase() == "param"){
      // Objekt erstellen und Schleife beenden
      var objChild = objPlayer.childNodes[i];
      break;
    }
  }

  objChild.value = strSrc;
  document.getElementById("player").parentNode.replaceChild(objPlayer, document.getElementById("player"));
}
Wichtig ist, dass die Quelle der Sounddatei wie in deinem Beispiel im value-Attribut des ersten param-Elementes angegeben wird.

Ciao
Quaese
 
Danke erstmal...
So weit, so gut.
Der neu ausgewählte Song wird geladen und abgespielt,
Aber der Browser ruft dabei eine zweite Instanz des Players auf und spielt, sollte der vorherigeTitel noch laufen während der nächste über das Listenfeld aufgerufen wird, diesen weiter ab.
Kann man dieses Problem irgendwie umgehen?
 
Hi,

ich kann das von dir beschriebene Problem bei mir nicht nachvollziehen.

Die erste Instanz des Players wird bei mir wie gewünscht im Script durch das duplizierte Objekt ersetzt (getestet im IE6).
Code:
<html>
<head>
<title>www.tutorials.de</title>
<meta name="author" content="Quaese">
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<script type="text/javascript">
  <!--
function changeSrc(strSrc){
  var objPlayer = document.getElementById("player").cloneNode(true);

  // Kindknoten des object-Elements durchlaufen
  for(var i=0; i<objPlayer.childNodes.length; i++){
    // Falls das erste param-Element gefunden wurde
    if(objPlayer.childNodes[i].nodeName.toLowerCase() == "param"){
      // Objekt erstellen und Schleife beenden
      var objChild = objPlayer.childNodes[i];
      break;
    }
  }

  objChild.value = strSrc;
  document.getElementById("player").parentNode.replaceChild(objPlayer, document.getElementById("player"));
}
 //-->
</script>
</head>
<body>
<select onchange="changeSrc(this.options[this.selectedIndex].value);">
  <option value="ynt_mean-streak.mp3">ynt_mean-streak.mp3</option>
  <option value="riot_swords-and-tequila.mp3">riot_swords-and-tequila.mp3</option>
</select>

<object classid="clsid:05589FA1-C356-11CE-BF01-00AA0055595A" id="player" height="45" width="250">
  <param name="src" value="ynt_mean-streak.mp3">
  <param name="autostart" value="false">
</object>
</body>
</html>
Ciao
Quaese
 
Ok, ich habe das Problem gefunden.
Ich hatte die Seite mit dem Player in einem Frame aufgerufen, und das war der Auslöser für die Fehlfunktion.
Gibt es das vielicht ein Möglichkeit, dass es trotzdem funktioniert.
Ich teste im IE 7.

Die "embed" - Lösung funktioniert in einem Frame aber ich wollte nicht auf diese Technik setzen, weil sie nur mit Mozilla richtig funktioniert und doch schon veraltet ist.
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück