26. november 2007 - 15:24Der 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):
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");
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.
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");
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:
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.