Problema – Flash + IE “Click to activate and use this control”

Mudámos de casa – visitem o novo site em www.istomesmo.com

Flash

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&#8243;

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&#8221; 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. 🙂


		

Uma resposta

  1. 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

Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão / Alterar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Terminar Sessão / Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão / Alterar )

Google+ photo

Está a comentar usando a sua conta Google+ Terminar Sessão / Alterar )

Connecting to %s

%d bloggers like this: