HTML & JS: Vereinfachung duch Variablen

cumulonimbus8

Fleet Admiral
Registriert
Apr. 2012
Beiträge
18.380
Hallo!

Ich vermute schon mal, dass die Antwort ein »klappt so nicht« sein wird.

Die Konstruktion eine SWF für den IE in <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" … zu kapseln und dort herinnen einen extra EMBED-Block für Mozilla einzuflechten dürfte bekannt sien. Das mag in Form eines als Tabelle ghandelten Codestücks so ausfallen:
Code:
 <table border="0" cellpadding="0" cellspacing="0" width="100%">
 <tr>
  <td>
  <div align="center">
   <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
    codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0"
    width="402"
    height="300"
    id="player"
    align="middle">
    <param name="movie" value="./meine.swf">
    <param name="loop" value="true">
    <param name="menu" value="true">
    <param name="quality" value="best">
    <param name="bgcolor" value="#FFFFFF">
    <embed
     src="./meine.swf"
     width="402"
     height="300"
     loop="true"
     quality="best"
     pluginspage="http://www.macromedia.com/go/getflashplayer"
     type="application/x-shockwave-flash">
    </embed>
   </object>
  </div>
  </td>
 </tr>
 </table>
Mich wurmt, dass ich 2x Dateiname, X-Auflösung und Y-Auflösung einsetzen muss. Für Tests (simpel ob das noch fürs Auge taugt oder nicht) ist das lästig. Also dachte ich wie folgt:
Code:
<script type="text/javascript">
 var SWFFile="/OrdnerAbRoot/NochEinOrdner/meine.swf";
 function SWF() {document.write(SWFFile);}
 var XRes="402";
 function XWidth() {document.write(XRes);}
 var YRes="300";
 function YHeight() {document.write(YRes);}
</script>
 <table border="0" cellpadding="0" cellspacing="0" width="100%">
 <tr>
  <td>
  <div align="center">
    <param name="movie" value="<script type='text/javascript'>SWF();</script>>
    <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
     codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0"
     width="<script type='text/javascript'>XWidth();</script>"
     height="<script type='text/javascript'>YHeight();</script>"
     id="player"
     align="middle">
    <param name="loop" value="true">
    <param name="menu" value="true">
    <param name="quality" value="best">
    <param name="bgcolor" value="#FFFFFF">
    <embed
     src="<script type='text/javascript'>SWF();</script>"
     width="<script type='text/javascript'>XWidth();</script>"
     height="<script type='text/javascript'>YHeight();</script>"
     loop="true"
     quality="best"
     pluginspage="http://www.macromedia.com/go/getflashplayer"
     type="application/x-shockwave-flash">
    </embed>
   </object>
  </div>
  </td>
 </tr>
 </table>
Diese vorprogrammierten Textstücke einfach in Fließtext einzubauen klappt hervorragend. Hier aber, als Variablenfütterung, tut es mir den Gefallen nicht.

Gibt es da eine Lösung die mir das Leben vereinfacht - außer eine andere Programmiersprache herzunehmen (ja, erwischt, VBA…) die einfach so ein HTML-Testfile aus einer Musterdatei überschreibend generiert?
Einfach flott und schnell eine Datei im Editor aufgemacht, die zu testenden Auflösungen eingegeben und in den Browsern beguckt - so hätte ich es gerne.

CN8
 
Hallo cumulonimbus8.

Ich würde das komplette Object Teil in Javascript realisieren. Dadurch bist du flexibler.

Kleines Minibeispiel:

html:
<div align="center" id="embedcontainer">

</div>

javascript:

var moviePath = "/OrdnerAbRoot/NochEinOrdner/meine.swf";
var movieY = 100;
var movieX = 200;

window.onload = function ()
{
// auf Nutzereingaben hören
movieY = prompt("Bitte MovieY eingeben..");
(.....)
document.getElementById("embedcontainer").innerHTML = '<param name="movie" value="'+moviePath+'"......';
}
 
Ich habe mich persönlich noch nicht mit embed und object auseinandergesetzt, aber kannst du nicht die Größe auf jeweils 100% setzen und die Höhe bzw Breite durch ein Container-Div anpassen?
 
@Hudey
Ich möchte schon sehr gern eine fertige HTML-Datei haben - ohne den Benutzer zu Reaktionen zu zwingen da ich eben diese (Datei..!) in mehrere Browser ›werfen‹ will. In dem Falle müsste ich jedes Mal alles eingeben - das wäre das handwerkliche Gegenteil.


@nico525
Ich will diverse Skalierungen vorführen können - und die gebe ich fest im Code vor. So, wie es bei einer im Web aufgerufenen Seite ja auch sein muss.


Also auf Anfang - diverse Browser benötigen eigene Codeschnipsel um nichts Großartigeres denn ein Abspielen einer SWF bewerkstelligen zu können die in einer bestimmten Skalierung, oder mehr Seitengrößen (Resultat einer Konvertierung z.B.), gezeigt wird.
Um beide Codesequenzen zu bedienen müsste ich bei Tests alles doppelt im Quellcode einhacken was auch mit Copy-Paste nur nervt. Nur eine Eingabe = hohe Unfallfreiheit.

CN8
 
Zurück
Oben