go to content | go to menu | przejdź do menu języków


Poprawne osadzanie Flash w (X)HTML bez javascript-u i poprawka Eolas dla IE

Data:
21 maj 2008
Kategoria:
Flash, HTML i XHTML
Author:
Cezary Tomczyk

Jest wiele sposobów na poprawne osadzanie flash-a w (X)HTML-u. My proponujemy rozwiązanie, które:

  • do uruchomienia flash-a nie wymaga javascript-u
  • nie wymaga znacznika <embed>
  • załatwia problem aktywacji flash-a po poprawce Eolas dla IE za pomocą javascript-u

Najpierw prosty kod html dla każdej przeglądarki uruchamiający flash-a:

  1. <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" width="600" height="550">
  2. <param name="movie" value="test.swf?parametr1=abc&amp;parametr2=xyz" />
  3. <param name="quality" value="high" />
  4. <param name="bgcolor" value="#ffffff" />
  5. <param name="flashvars" value="parametr1=abc&amp;parametr2=xyz" />
  6. <!--[if !IE]><--><object data="test.swf" width="600" height="550" type="application/x-shockwave-flash">
  7. <param name="quality" value="high" />
  8. <param name="bgcolor" value="#ffffff" />
  9. <param name="pluginurl" value="http://www.macromedia.com/go/getflashplayer" />
  10. <param name="bgcolor" value="#ffffff" />
  11. <param name="flashvars" value="parametr1=abc&amp;parametr2=xyz" /><p>Alternatywna zawartość w przypadku braku flash-a.</p></object><!--> <![endif]--></object>

Standardowo parametry flashvars przekazujemy przez <param name="flashvars" value="parametr1=abc&amp;parametr2=xyz" />, ale przy poprawce Eolas dla Internet Explorera (IE):

  1. // Fix activating flash, qt, etc. objects
  2. fixFlash = function() {
  3. theObjects = document.getElementsByTagName("object");
  4. for (var i = 0; i < theObjects.length; i++) {
  5. theObjects[i].outerHTML = theObjects[i].outerHTML;
  6. }
  7. }

parametry flashvars są po prostu gubione. Dlatego można przekazać parametry przez dodanie ich za adresem pliku, np. <param name="movie" value="test.swf?parametr1=abc&amp;parametr2=xyz" />, albo zastosować inny sposób na poprawkę Eolas dla IE, która zachowa parametry flashvars :

  1. // Fix activating flash, qt, etc. objects with save params sets in the <param>
  2. function ieupdate(){
  3. var strBrowser = navigator.userAgent.toLowerCase();
  4. if(strBrowser.indexOf("msie") > -1 && strBrowser.indexOf("mac") < 0){
  5. var theObjects = document.getElementsByTagName('object');
  6. var theObjectsLen = theObjects.length;
  7. for (var i = 0; i < theObjectsLen; i++) {
  8. if(theObjects[i].outerHTML){
  9. if(theObjects[i].data){
  10. theObjects[i].removeAttribute('data');
  11. }
  12. var theParams = theObjects[i].getElementsByTagName("param");
  13. var theParamsLength = theParams.length;
  14. for (var j = 0; j < theParamsLength; j++) {
  15. if(theParams[j].name.toLowerCase() == 'flashvars'){
  16. var theFlashVars = theParams[j].value;
  17. }
  18. }
  19. var theOuterHTML = theObjects[i].outerHTML;
  20. var re = /<param name="FlashVars" value="" \/>/ig;
  21. theOuterHTML = theOuterHTML.replace(re, "<param name='FlashVars' value='" + theFlashVars + "' />");
  22. theObjects[i].outerHTML = theOuterHTML;
  23. }
  24. }
  25. }
  26. }
  27. function ieupdate_flush() {
  28. if (document.getElementsByTagName) {
  29. var objs = document.getElementsByTagName("object");
  30. for (i=0; i<objs.length; i++) {
  31. objs[i].outerHTML = "";
  32. }
  33. }
  34. }

Źródło kodu:flash problem in IE7 and IE6 + drobne nasze poprawki.

Następny lub poprzedni wpis

Twój komentarz

(required)
(required)




Szukaj