Avatar billede w13 Novice
26. november 2007 - 15:24 Der er 3 kommentarer og
1 løsning

DOM-indsættelse af param-element

Hej Eksperter.

Jeg tænkte, at jeg lige ville stykke en DOM-kode sammen, som indsatte et Flash-objekt et bestemt sted på siden. Formålet skulle bl.a. være at undgå "Click to active", som IE7 har medført, og det kan jo omgåes ved at indsætte Flash'en med en ekstern JavaScript-kode.

Så jeg fandt frem til en kode, der skulle være fuldt ud valid i følge W3C-standard (HTML 4.01):

<object type="application/x-shockwave-flash" data="banner.swf" width="800" height="250">
    <param name="movie" value="banner.swf">
</object>

Og jeg bruger så følgende kode til indsættelsen:
------------------------------------------------
function flash(src,container){
    var newElement=document.createElement("object");
    newElement.setAttribute("type","application/x-shockwave-flash");
    newElement.setAttribute("data",src);
    newElement.setAttribute("width","800");
    newElement.setAttribute("height","250");

    newElement.appendChild(document.createElement("param"));
    newElement.firstChild.setAttribute("name","movie");
    newElement.firstChild.setAttribute("value","banner.swf");

    container.appendChild(newElement);
}
------------------------------------------------
Men param bliver aldrig indsat i object i IE7! Det fungerer upåklageligt i FF og diverse andre browsere, men IE7 nægter simpelthen.

Jeg har også lagt mærke til, at selvom man manuelt har skrevet flash-koden i HTML, så vises <param>-tag'et ikke, når man alerter sidens kode. Dog kræves param-tag'et for at få koden til at fungere i IE7.

Jeg har søgt på W3.org og fået bekræftet, at param stadig er fuldt gyldigt i HTML 4.01, så hvorfor fungerer det ikke? Jeg har heller ikke kunne finde noget på nettet om, at det skulle være en bug i IE. Laver jeg en fejl, jeg ikke ser, i den ellers meget korte kode?

Lige nu fungerer det - med innerHTML! Så det holder jo ikke i længden.

Håber I kan hjælpe, og på forhånd tak!
Avatar billede roenving Novice
26. november 2007 - 16:59 #1
Hvordan reagerer den, hvis du groft og brutalt tænker denne param-ting som en property (de kan nemlig nås på den måde !-)

function flash(src,container){
    var newElement=document.createElement("object");
    newElement.setAttribute("type","application/x-shockwave-flash");
    newElement.setAttribute("data",src);
    newElement.setAttribute("width","800");
    newElement.setAttribute("height","250");

    newElement.movie="banner.swf";

    container.appendChild(newElement);
}
Avatar billede w13 Novice
27. november 2007 - 00:48 #2
Så sætter den ikke movie-attributten ind, selvom jeg dog heller ikke får fejl. Den indsætter blot:
<OBJECT type=application/x-shockwave-flash height=250 width=800 data=banner.swf></OBJECT>

og flash'en står bare og loader, fordi den mangler <param> med data om filmen. =(
Jeg har også forsøgt med: newElement.appendChild(document.createElement("<param name='movie' value='banner.swf'>")); med samme resultat.

Og med den kode, jeg skrev i første indlæg, får jeg fejlmeddelelsen: 'firstChild' er null eller ikke et objekt.

Det mærkeligste er, at selvom man direkte i HTML-koden skriver:

<object type="application/x-shockwave-flash" data="banner.swf" width="800" height="250">
    <param name="movie" value="banner.swf">
</object>

Når man så aflæser det - f.eks. med innerHTML - så returnerer den bare:

<object type="application/x-shockwave-flash" data="banner.swf" width="800" height="250"></object>

..selvom den virker.
Avatar billede w13 Novice
27. november 2007 - 00:57 #3
Hvis jeg bruger:

    var newElement=document.createElement("<object type='application/x-shockwave-flash' data='"+src+"' width='800' height='250' movie='banner.swf'></object>");
    container.appendChild(newElement);

Så returnerer den dog:

<OBJECT type=application/x-shockwave-flash height=250 width=800 data=banner.swf movie="banner.swf"></OBJECT>

Men stadig med samme resultat.
Avatar billede w13 Novice
01. december 2007 - 13:06 #4
Hmm. Det må jeg vende tilbage til en anden gang.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester