swf mit javascript einfügen
basti_p
- javascript
0 wahsaga
Hallo,
um die Meldung "Klicken Sie hier..." bei z.B. FlashMovies im IE loszuwerden, habe ich bisher per JavaScript das Flash-Objekt gelöscht und dann das object-Tag als String neu aufgebaut und über innerHTML eingefügt - was auch funktioniert hat - kein Rahmen mehr.
Um das Ganze zu vereinfachen und ggf. auch mehrere SWF's zu verarbeiten, wollte ich jetzt folgendermaßen vorgehen:
if(document.getElementsByTagName("object").length>0)
{
for(var i=0;i<document.getElementsByTagName("object").length;i++)
{
var tmpNode=document.getElementsByTagName("object")[i].cloneNode(true);
var parNode=document.getElementsByTagName("object")[i].parentNode;
parNode.removeChild(document.getElementsByTagName("object")[i]);
parNode.appendChild(tmpNode);
}
}
}
Die Funktion wird bei body.onload aufgerufen. Das Movie wird zwar neu eingefügt - der Rahmen mit der Meldung bleibt leider. Könnt Ihr mir sagen, woran dass liegt?
Danke und Grüße Basti
hi,
um die Meldung "Klicken Sie hier..." bei z.B. FlashMovies im IE loszuwerden,
Schau dir mal UFO an.
gruß,
wahsaga
Vielen Dank für den Link, sehr interessant,
ich möchte allerdings alle in einer Seite eingebundenen Flash-Objekte im IE automatisch neu einfügen. Ich habe es jetzt erstmal so gelöst - ist zwar getrickst, funktioniert aber:-)
for(...){
var tmpNode=document.createElement("div");
tmpNode.appendChild(document.getElementsByTagName("object")[i].cloneNode(true));
var parNode=document.getElementsByTagName("object")[i].parentNode;
parNode.removeChild(document.getElementsByTagName("object")[i]);
parNode.innerHTML+=tmpNode.innerHTML;
}
Grüße Basti
Lieber basti_p,
ich möchte allerdings alle in einer Seite eingebundenen Flash-Objekte im IE automatisch neu einfügen.
in Anbetracht, dass vielleicht User anderer Browser überhaupt keinen Flash-Plugin installiert haben, denke ich, dass das dynamische Einbinden eines Flashfilms sowieso eine sinnvolle Vorgehensweise ist.
Allerdings finde ich Deinen Ansatz verbesserungswürdig, da er bereits eingebundene Flashfilme aus dem Dokument ausschneidet, um sie dann wieder einzufügen... Wie wäre es denn, kleine Platzhalter (<div>) einzusetzen, die erst auf einen Klick hin den Flashfilm einbinden und abspielen? Ich stelle mir das in etwa so ähnlich vor, wie es das die FlashBlock-Erweiterung des Firefox tut. Ich liebe es, Flash nur auf Abruf abzufahren!
Dabei könnte man so vorgehen:
<!-- HTML-Teil -->
<div class="flashplayer"><a href="{link-zur-SWF-datei}">Flashfilm abspielen</a></div>
/* JavaScript-Teil */
function init() {
// alle Platzhalter finden und...
var divs = document.getElementsByTagName("div");
var fplayers = new Array();
for (var i=0; i < divs.length; i++) {
if (divs[i].className && divs[i].className == "flashplayer")
fplayers[fplayers.length] = divs[i];
}
// ....onclick-Handler auf den Link legen
for (var i=0; i < fplayers.length; i++)
fplayers[i].getElementsByTagName("a")[0].onclick = function () {
wandle_div_zu_SWF(this);
};
}
// Die Umwandlungsfunktion
function wandle_div_zu_SWF(linkObj) {
var swfDatei = linkObj.href;
// DIV-Element (ist ein Vorfahren-Element) finden
var div = linkObj;
while (!div.tagName || div.tagName != "div")
div = div.parentNode;
/* Hier jetzt die Ersetzung vornehmen! Die URL zur Flashdatei steht in
"swfDatei", das Platzhalter-DIV steht in "div"... */
}
Liebe Grüße aus Ellwangen,
Felix Riesterer.