Ativar controle activex automaticamente

  • Autor do post:
  • Categoria do post:PHP DEV

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

Este post tem 21 comentários

  1. DOUGLAS

    muito bom este script, estou pensando em colocar um na minha página com alguns anúncios.

  2. rafael

    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,

  3. clares

    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,

  4. Junior

    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

  5. Flavia

    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

  6. Rafael Clares

    Olá Flavia, poderia explicar melhor ? Dar um exemplo, mostrar o link ? abraços

  7. Jota

    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.

    1. Rafael Clares

      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

  8. Jota

    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.

  9. Rafael Clares

    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

  10. rodrigo

    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.

    1. Rafael Clares

      Rodrigo, é justamente isso que está escrito nesse Post.

  11. jose martins

    bom

  12. Diego TR

    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

    1. Rafael Clares

      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,

  13. matilde

    prezado amigo sou novata no ramo me ajude
    esse arquivo html coloco aonde?

  14. matilde

    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

    1. Rafael Clares

      Matilde, prefira fazer o download do exemplo ao invés de copiar o código. Fiz o download e testei, está funcionando.
      Abraços

  15. akimier

    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

  16. Julianny

    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

Os comentários estão encerrados.