
Nas últimas versões do Internet Explorer (6 e 7), os flashs necessitam de ser activados antes de poderem ser usados. Este problema ocorre porque a Microsoft teve de alterar o funcionamento dos browsers para respeitar uma patente denominada de EOLAS.
A última versão do Opera (9) também foi alterada para respeitar a mesma patente.
Para podermos contornar este pequeno problema, tem de utilizar um pequeno “workaround” para enganar o browser.
O procedimento não é muito complicado, baseia-se num ficheiro javascript com duas funções que devem ser chamadas, uma antes da declaração do objecto flash e outra depois.
O ficheiro javascript vai conter o seguinte código:
IEEOLASFIX.js
//IEEOLASFIX para fixar o click to activate do flash
var bo_ns_id = 0;
function startIeFix(){
if(isIE()){
document.write(‘<noscript id=”bo_ns_id_’ + bo_ns_id + ‘”>’);
}
}
function endIeFix(){
if(isIE()){
var theObject = document.getElementById(“bo_ns_id_” + bo_ns_id++);
var theNoScript = theObject.innerHTML;
document.write(theNoScript);
}
}
function isIE(){
var strBrowser = navigator.userAgent.toLowerCase();
if(strBrowser.indexOf(“msie”) > -1 && strBrowser.indexOf(“mac”) < 0){
return true;
}else{
return false;
}
}
Depois, de termos adicionado o ficheiro anterior ao projecto, necessitamos de referência-lo em todas as páginas, se estivermos a utilizar masterpages, aí será o sitio ideal para o declararmos, através do código seguinte introduzido no header da página:
<script type=”text/javascript” language=”JavaScript” src=”<PASTA DO FICHEIRO>/IEEOLASFIX.js”>
Agora, em todas as declarações de objectos flash, temos de invocar as funções javascript da seguinte forma:
<script type=”text/javascript”>startIeFix();</script>
<object classid=”clsid:D27CDB6E-AE6D-11cf-96B8-444553540000″ codebase=”http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0″
width=”151″ height=”145″ viewastext>
<param name=”Movie” value=”<PASTA DO FLASH>/flash.swf”>
<param name=”quality” value=”high”>
<param name=”wmode” value=”transparent”>
<embed wmode=”transparent” src=”<PASTA DO FLASH>/flash.swf”
quality=”high” pluginspage=”http://www.macromedia.com/go/getflashplayer” type=”application/x-shockwave-flash”
width=”100″ height=”100″>
</embed>
</object>
<!–[if gte IE 6]></noscript><![endif]–>
<script type=”text/javascript”>endIeFix();</script>
Desta forma temos o problema resolvido. Agora o flash aparece activado logo de inicio e pronto a ser usado, melhorando em muito a experiência de navegação web.
Mais um problema resolvido! Se tiverem dúvidas ou outras formas de resolver o problema deixem o vosso comentário. São muito bem vindos.




Fevereiro 29th, 2008 at 16:58
Eu estou com um problema no seguinte , Tenho uma pagina que pega a referencia do usuario (http_referer) so que quando o link pra essa pagina é um .swf (banner flash) no IE , nao aprece a pagina e sim o caminho deste .swf ..Com monzila etc funciona.
http://www.codescene.com/2005/12/flash-ie-and-the-http-referer.php