Poprawne osadzanie Flash w (X)HTML bez javascript-u i poprawka Eolas dla IE
- Data:
- 21 maj 2008
- Kategoria:
- Flash, HTML i XHTML
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:
<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"><param name="movie" value="test.swf?parametr1=abc&parametr2=xyz" /><param name="quality" value="high" /><param name="bgcolor" value="#ffffff" /><param name="flashvars" value="parametr1=abc&parametr2=xyz" /><!--[if !IE]><--><object data="test.swf" width="600" height="550" type="application/x-shockwave-flash"><param name="quality" value="high" /><param name="bgcolor" value="#ffffff" /><param name="pluginurl" value="http://www.macromedia.com/go/getflashplayer" /><param name="bgcolor" value="#ffffff" /><param name="flashvars" value="parametr1=abc&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&parametr2=xyz" />, ale przy poprawce Eolas dla Internet Explorera (IE):
// Fix activating flash, qt, etc. objectsfixFlash = function() {theObjects = document.getElementsByTagName("object");for (var i = 0; i < theObjects.length; i++) {theObjects[i].outerHTML = theObjects[i].outerHTML;}}
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&parametr2=xyz" />, albo zastosować inny sposób na poprawkę Eolas dla IE, która zachowa parametry flashvars :
// Fix activating flash, qt, etc. objects with save params sets in the <param>function ieupdate(){var strBrowser = navigator.userAgent.toLowerCase();if(strBrowser.indexOf("msie") > -1 && strBrowser.indexOf("mac") < 0){var theObjects = document.getElementsByTagName('object');var theObjectsLen = theObjects.length;for (var i = 0; i < theObjectsLen; i++) {if(theObjects[i].outerHTML){if(theObjects[i].data){theObjects[i].removeAttribute('data');}var theParams = theObjects[i].getElementsByTagName("param");var theParamsLength = theParams.length;for (var j = 0; j < theParamsLength; j++) {if(theParams[j].name.toLowerCase() == 'flashvars'){var theFlashVars = theParams[j].value;}}var theOuterHTML = theObjects[i].outerHTML;var re = /<param name="FlashVars" value="" \/>/ig;theOuterHTML = theOuterHTML.replace(re, "<param name='FlashVars' value='" + theFlashVars + "' />");theObjects[i].outerHTML = theOuterHTML;}}}}function ieupdate_flush() {if (document.getElementsByTagName) {var objs = document.getElementsByTagName("object");for (i=0; i<objs.length; i++) {objs[i].outerHTML = "";}}}
Źródło kodu:flash problem in IE7 and IE6
+ drobne nasze poprawki.
Twój komentarz
Kategorie
- Accessibility (16)
- Aktualności Ikeris (22)
- Artykuły (12)
- CSS (13)
- Flash (4)
- Grafika (2)
- HTML i XHTML (13)
- Oprogramowanie (6)
- Programowanie (18)
- Przeglądarki (23)
- Server side (3)
- Skrypty (7)
- Systemy (2)
- Usability (6)
- Wordpress (11)
Linki
