RealPlayer in IE per JavaScript-DOM-Manipulation

DealeyLama

Mitglied
Hallo,

ich versuche, die 'object'-Tags sowie die dazugehörigen 'param'-Tags zum Einbetten des RealPlayers in den IE per DOM-Manipulation über JavaScript zu erledigen.

Dafür habe ich folgenden Code geschrieben:

HTML:
<?xml version="1.0"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
  <head>
    <title>DOM-Player IE</title>
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
  </head>
  <body>
 
    <div id="playerDiv" align="center">
     
        <!--
        <object id="player" classid="CLSID:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA" height="250" width="540">
          <param name="controls" value="ImageWindow" />
          <param name="console" value="clip1" />
          <param name="autostart" value="true" />
          <param name="src" value="http://realmedia.uic.edu/ramgen/itltv/bbintro.30jan02.smil?embed" />
        </object>
        -->
 
    </div>
    
    <script type="text/javascript" language="JavaScript">
    
      var playerDiv = document.getElementById("playerDiv");
      var player = document.createElement("object");
      
      player.setAttribute("id", "player");
      player.setAttribute("classid", "CLSID:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA");
      player.setAttribute("height", "250");
      player.setAttribute("width", "540");
      
      var srcParam = document.createElement("param");
      srcParam.setAttribute("name", "src");
      srcParam.setAttribute("value", "http://realmedia.uic.edu/ramgen/itltv/bbintro.30jan02.smil?embed");
      player.appendChild(srcParam);
      
      var controlsParam = document.createElement("param");
      controlsParam.setAttribute("name", "controls");
      controlsParam.setAttribute("value", "ImageWindow");
      player.appendChild(controlsParam);
      
      var consoleParam = document.createElement("param");
      consoleParam.setAttribute("name", "console");
      consoleParam.setAttribute("value", "clip1");
      player.appendChild(consoleParam);
      
      var autostartParam = document.createElement("param");
      autostartParam.setAttribute("name", "autostart");
      autostartParam.setAttribute("value", "true");
      player.appendChild(autostartParam);
      
      playerDiv.appendChild(player);

    </script>
    
  </body>
</html>
Der untere Script-Teil sollte in seiner Wirkung dem oben auskommentierten <object>-Block entsprechen.
Allein: es geht nicht...
Der RealPlayer wird zwar eingebettet, aber er füllt den gesamten reservierten Bereich mit seinem Bedienelementen. Vom Clip ist nichts zu sehen.
Ich bin mir aber auch relativ sicher, daß ich keinen logischen Fehler im Aufbau meines player-Elements habe.
Falls Jemand Rat weiß, würde ich mich darüber sehr freuen...

Vielen Dank im voraus und schönen Abend

Alexander Schell

Ach ja: das Firefox Gegenstück zu diesem Fragment funktioniert übrigens einwandfrei...
Dort lasse ich das <embed>-Tag von JavaScript auf genau dem selben Weg aufbauen, binde es in den DOM-Baum ein und der RealPlayer funktioniert klaglos...
Es scheint sich also um ein Problem des IE zu handeln, aber mit sicherheit kann ich das nicht sagen.
 
Zuletzt bearbeitet:
Ich glaub' ich hab's gelöst... :)

und zwar so:

HTML:
<?xml version="1.0"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
  <head>
    <title>DOM-Player IE</title>
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
  </head>
  <body>
 
    <div id="playerDiv" align="center">
     
        <!--
        <object id="player" classid="CLSID:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA" height="250" width="540">
          <param name="controls" value="ImageWindow" />
          <param name="console" value="_unique" />
          <param name="autostart" value="true" />
          <param name="src" value="http://realmedia.uic.edu/ramgen/itltv/bbintro.30jan02.smil?embed" />
        </object>
        -->        
        
    </div>
    
    <script type="text/javascript" language="JavaScript">
    
      var playerDiv = document.getElementById("playerDiv");
      var player = document.createElement("object");
      
      // Hier die Festlegung des 'classid'-Elements entfernen...
      player.setAttribute("id", "player");
      player.setAttribute("height", "250");
      player.setAttribute("width", "540");
      
      var srcParam = document.createElement("param");
      srcParam.setAttribute("name", "src");
      srcParam.setAttribute("value", "http://realmedia.uic.edu/ramgen/itltv/bbintro.30jan02.smil?embed");
      player.appendChild(srcParam);
      
      var controlsParam = document.createElement("param");
      controlsParam.setAttribute("name", "controls");
      controlsParam.setAttribute("value", "imagewindow");
      player.appendChild(controlsParam);
      
      var consoleParam = document.createElement("param");
      consoleParam.setAttribute("name", "console");
      consoleParam.setAttribute("value", "_unique");
      player.appendChild(consoleParam);
      
      var autostartParam = document.createElement("param");
      autostartParam.setAttribute("name", "autostart");
      autostartParam.setAttribute("value", "true");
      player.appendChild(autostartParam);
      
      playerDiv.appendChild(player);
      
      // Erst hier das 'classid'-Attribut festlegen...
      document.all["player"].classid = "CLSID:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA";

    </script>
    
  </body>
</html>
Scheinbar - obwohl ich mir nicht erklären kann wieso - ist das einhängen, des von mir erzeugten Elementes nicht schnell genug erledigt, so daß der startende RealPlayer nicht in der Lage ist alle Attribute zu erfassen.
Sagt man dem erzeugten <object>-Element nachträglich welcher Typ Anwendung dort eingebunden werden soll, funktioniert es einwandfrei.

schönen Abend

Alexander Schell
 

Neue Beiträge

Zurück