Olá Pessoal, mais um script rápido e útil!
Imagine que você precise colocar em uma página, uma ou mais animações (banner, header, logo…) em flash e não quer que o usuário precise ativa-la tendo que clicar na área da animação que passa a conter o texto “Clique aqui para ativar e usar este controle”… isso mesmo o cara tem que clicar no local onde está a animação para que ele possa ativa-la, mais diretamente… o usuário tem que permitir que a animação inicie no browser dele!
Bem, parece até uma medida de segurança, legal a iniciativa, mas de toda forma isso é muito desagradável e para resolver ao menos esse problema fiz um script em JavaScript que inicia automáticamente a animação sem precisar que o pobre usuário (que muitas vezes nem sabe o que é aquilo) precise sair clicando o site todo para saber o que tem nele.
Segue o arquivo index.html que conterá a animação:
<html>
<head>
<title>autoFlash</title>
<script src=”autoflash.js” type=”text/javascript”></script>
</head>
<body>
<div id=”DivFlash”></div>
</body>
</html>
A linha <div id=”DivFlash”></div> irá receber a animação assim que a página for carregada, para isso usaremo no JavaScript o método window.onload que permite informar quais eventos ou funções serão iniciadas após o carregamento total da página.
Vamos ao JavaScript – salve-o como autoflash.js
function flashAct(idElem,nomeSWF,largSWF,altSWF) {
movie = ‘<object classid=clsid:D27CDB6E-AE6D-11cf-96B8-444553540000’
movie += ‘ codebase=http://download.macromedia.com/pub/shockwave/cabs/’
movie += ‘flash/swflash.cab#version=5,0,2,0 width=”‘+largSWF+'”‘
movie += ‘ height=”‘+altSWF+'”>’
movie += ‘ <param name=”movie” value=”‘+nomeSWF+’.swf”>’
movie += ‘ <param name=quality value=”high”>’
movie += ‘ <param name=BGCOLOR value=#333333>’
movie += ‘ <param name=SCALE value=exactfit>’
movie += ‘ <embed src=”‘+nomeSWF+’.swf”‘
movie += ‘ quality=high’
movie += ‘ pluginspage=http://www.macromedia.com/shockwave/download/’
movie += ‘index.cgi?P1_Prod_Version=ShockwaveFlash type=application/x-shockwave-flash’
movie += ‘ width=”‘+largSWF+'”‘
movie += ‘ height=”‘+altSWF+'”‘
movie += ‘ bgcolor=#333333’
movie += ‘ scale= exactfit>’
movie += ‘ </embed>’
movie += ‘ </object>’
movie += ‘ </object>’
document.getElementById(idElem).innerHTML = movie;
}
window.onload = function(){
flashAct(‘DivFlash’,’future’,’590′,’140‘)
}
Como pode perceber a função flashAct recebe 4 paramentros sendo eles id da div, nome do arquivo flash sem a extensão, largura e altura, até muito simples de entender.
Agora preste atenção no seguinte, percebe que a variavel movie está concatenada e recebe toda a tag embed necessária para inserir uma animação flash no HTML, observe bem o código… existe um espaço no inicio das concatenações, isso ocorre pq deve haver espaço entre as tags inferiores de embed para que a animação seja inserida corretamente e funcione, agora você me diz: Pq que não colocou no final da concatenção e eu lhe digo: Pq senão poucos iriam perceber o espaço. Há no entanto 2 linhas que não possuem o espaço no inicio da concatenação e isso é proposital, ou seja, nesse local realmente não pode ter espaço, trata-se de uma única linha que dividi em 2 por estética (boa visualização do código).
As linhas sem espaço são:
movie += ‘ codebase=http://download.macromedia.com/pub/shockwave/cabs/’
movie += ‘flash/swflash.cab#version=5,0,2,0 width=”‘+largSWF+'”‘
A segunda linha acima deve realmente conter o espaço.
movie += ‘ pluginspage=http://www.macromedia.com/shockwave/download/’
movie += ‘index.cgi?P1_Prod_Version=ShockwaveFlash type=application/x-shockwave-flash’
A segunda linha acima deve realmente conter o espaço.
Bem, acho que isso ficou claro não é! Mas ainda falta explicar a linha abaixo:
document.getElementById(idElem).innerHTML = movie;
Essa linha contém a instrução que irá inserir dentro da tag div passada no parametro da função o embed ou a variável movie que contém as informações da animação.
No window.onload é feita chamada à função flashAct(‘DivFlash’,’future’,’590′,’140‘) onde DivFlash é o ID da minha div que receberá o flash, future é o nome do arquivo swf (sem extensão), 590 é a largura que deverá conter a animação e 140 é a altura da animação.
Veja o exemplo funcionando e sem a frase “ativar o controle…” =/
Download dos arquivos flash.
abraços,
Rafael Clares
muito bom este script, estou pensando em colocar um na minha página com alguns anúncios.
Bom Dia,
Estou com dificuldades em colocar o activex no flash automatico, eu vi o seu codigo no seu blog, baixei o exemplo que vc fez e abri no meu ie7.0, ele pediu p/ ativar o activex com o flash, depois de pronto com esse codigo que vc inseriu ele irá atualizar o activex automaticamente somente qdo estive hospedado o meu site, ou teria q atualizar automaticamente aqui local no meu micro também??
Obrigado,
Olá,
Rafael é justamente como você mencionou!
Ao abrir localmente ele irá pedir para ativar o activex da página mas não do flash em si! Se você hospedar em seu site ele não pedirá para ativar em nenhum dos 2 casos, assim como está no exemplo.
Abraços,
fala Rafa blz??
cara como sempre de parabens ai na explicacao. show de bola este exemplo. precisava disso a algum tempo atras mas ninguem soube me explicar hehe….
aproveitando o post, estava precisando de algumas dicas de como colocar videos em um site de forma legal e interessante. Se tiver algum posta ai pra galera.
abraçosss
Oi, Rafael.
Estou com dificuldades em abrir um site. Consta sempre erro de conexão. Sei q o Controle Activex está por detrás disso, mas já tentei tudo e não resolve. Vc poderia me ajudar?
Att,
Flavia
Olá Flavia, poderia explicar melhor ? Dar um exemplo, mostrar o link ? abraços
Olá Rafael.
Normalmente quando criamos um site em HTML sempre que o abrimos temos que permitir a activação do ActiveX ou de scripts. No entanto eu gostava de saber como faço para activar automaticamente o ActiveX ou scripts de um site so em html que não tenha flash.
Ou será que depois de online não pedirá mais para activar e activará automaticamente?
Abraços.
Jota,
é o seguinte essa ativação à que você se refere é uma questão de segurança, você realmente deve permitir que um script seja executado em sua máquina, se um activex permite rodar um programa qualquer em sua máquina … poderia ser um vírus não é? um programa que formate uma partição ou qualquer coisa que possa ser executado…
Aqui nesse post abordamos a questão da ativação do flash que neste caso também é feito pelo activeX, no entanto trata-se de uma outra forma de ativação que é aquela em que apenas clicamos em cima e não existe risco aparente…talvez o título do post não esteja muito de acordo com que abordamos nele. Talvez eu o mude. Não sei como fazer o que você perguntou e se soubesse eu não usaria… só para você ter uma idéia, um activeX utilizado no site da Panda Antivirus ( link) instala pelo site o um pacote para rodar o antivirus pelo site, ou seja, online… daí você pode imaginar se isso fosse feito sem que você permitisse…
abraços
Ola Rafael.
Mas em todo o site que eu entro contem pelo menos um script e não me é pedido para o activar.
Eu estou criando um site em HTML e quando eu o abro (offline) aparece aquela barra de segurança para activar os scripts ou o activeX de modo a que o site funcione pois senão activar os menus não funcionam, etc.
E, por exemplo, neste site existe scripts e quando eu entro nele não me é pedido para activar nada.
Abraços.
Jota, nesse caso se usar o script proposto neste post quando o site estiver on-line(hospedado) nao devera pedir ativacao, qualque coisa mostra ai o codigo. flw
Ola amigo, eu gostaria que quando um cliente abrir meu site não apareça aquela msg do controle activex,me explica detalhadamente como fazer isto.
Rodrigo, é justamente isso que está escrito nesse Post.
bom
Olá,
gostei muito da sua função, porém se tenho outra função em java script na mesma página fazendo onload no BODY, a função de ativação não funciona, gostaria de saber se teria outra maneira de faze-la funcionar?
Obrigado
Diego TR
Olá Diego,
cara basta retirar sua função do Onload BODY e colocar no arquivo Javascript (autoflash.js) no local comentado
window.onload = function(){
flashAct(‘DivFlash’,’future’,’590′,’140′);
// coloque aqui a chamada à sua função
}
Abraços,
prezado amigo sou novata no ramo me ajude
esse arquivo html coloco aonde?
prezado amigo estou tentando fazer mas esta dando erro na linha 3 ou seja movie = ‘<object classid=clsid:D27CDB6E-AE6D-11cf-96B8-444553540000′
um forte abraço
Matilde, prefira fazer o download do exemplo ao invés de copiar o código. Fiz o download e testei, está funcionando.
Abraços
nao estou entendendo como que faz pra ativar o plug-in entendi que tem que fazer um arquivo em .JS mas nao encontrei o lugar pra colocar onde minha animacao esta armazenada
Rafael, estou com uma aplicação (mais especificamente um WPF) em C#, onde quero rodar um Flash. Porém, não é possivel usando o arquivo .swf e uma solução que encontrei foi a de colocar o .swf num HTML e depois rodá-lo no C#, mas ainda persiste ter que habilitar o ActiveX com o clique do mouse e nao executar automaticamente. Você tem alguma ideia do que eu possa fazer? Obrigada, Julianny
Oi Ju, já tentou o http://jquery.lukelutman.com/plugins/flash/ ?