Felix Riesterer: swf mit javascript einfügen

Beitrag lesen

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.

--
ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)