Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Fábio Penna

[Resolvido] Script setTimeout não funciona no Chrome

Recommended Posts

Olá pessoal, estou tentando fazer funcionar um script simples, funciona perfeitamente no IE mas no Chrome não funciona.

 

Segue abaixo o script:

 

<script type="text/javascript">
setTimeout("document.getElementById('fundo2').click();", 15000);
</script>

<a href="images/bg_img2.jpg" id="fundo2" name="fundo2">2</a>

 

Espero que possam me ajudar, obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não passe uma string como o primeiro parametro do setTimeout, passe uma função. Em Javascript, funções são objetos de primeira classe, logo, você pode colocá-las em variaveis e passá-las como parametro:

var changeBg = function(){
   document.getElementById( 'fundo2' ).click();
};

setTimeout( changeBg, 15000 );

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não passe uma string como o primeiro parametro do setTimeout, passe uma função. Em Javascript, funções são objetos de primeira classe, logo, você pode colocá-las em variaveis e passá-las como parametro:

var changeBg = function(){
   document.getElementById( 'fundo2' ).click();
};

setTimeout( changeBg, 15000 );

 

 

Ok, obrigado, mas mesmo assim, não funciona no Chrome.

 

O site que estou desenvolvendo é http://www.fabiopennafotografo.com.br, podem ver que no internet explorer o fundo muda a cada 15 segundos, mas no Chrome não funciona o script.

 

Pessoal, encontrei um script que acho que pode funcionar para mim, mas como sou leigo em script, talvez possam me ajudar. Será que teria como utilizar este script para executar o document.getElementById( 'fundo2' ).click();?.

 

<script type="text/javascript">
<!--
var imageCount = 0;
var currentImage = 0;
var images = new Array();

images[0] = 'ENDERECO DA IMAGEM';
images[1] = 'ENDERECO DA IMAGEM';
images[2] = 'ENDERECO DA IMAGEM';
images[3] = 'ENDERECO DA IMAGEM';
images[4] = 'ENDERECO DA IMAGEM';

var preLoadImages = new Array();
for (var i = 0; i < images.length; i++)
{
  if (images[i] == "")
     break;

  preLoadImages[i] = new Image();
  preLoadImages[i].src = images[i];
  imageCount++;
}

function startSlideShow()
{
  if (document.body && imageCount > 0)
  {
     document.body.style.backgroundImage = "url("+images[currentImage]+")";    
     document.body.style.backgroundAttachment = "fixed";
     document.body.style.backgroundRepeat = "repeat";
     document.body.style.backgroundPosition = "left top";

     currentImage = currentImage + 1;
     if (currentImage > (imageCount-1))
     { 
        currentImage = 0;
     }
     setTimeout('startSlideShow()', 15000);
  }
}
startSlideShow();
//-->
</script>

 

Alguma coisa assim:

 

var imageCount = 0;
var currentImage = 0;
var images = new Array();

images[0] = 'fundo2';
images[1] = 'fundo3';
images[2] = 'fundo4';
images[3] = 'fundo5';
images[4] = 'fundo6';
images[5] = 'fundo7';
images[6] = 'fundo1';


for (var i = 0; i < images.length; i++)
{
  if (images[i] == "")
     break;

  imageCount++;
}

function startSlideShow()
{
  if (document.body && imageCount > 0)
  {
     document.getElementById( ''+images[currentImage]+'' ).click();

     currentImage = currentImage + 1;
     if (currentImage > (imageCount-1))
     { 
        currentImage = 0;
     }
     setTimeout('startSlideShow()', 15000);
  }
}
startSlideShow();

 

Consegui fazer funcionar assim, mas no Chrome continua sem funcionar:

 

		<script type="text/javascript">

var imageCount = 0;
var currentImage = 0;
var images = new Array();

images[0] = 'fundo2';
images[1] = 'fundo3';
images[2] = 'fundo4';
images[3] = 'fundo5';
images[4] = 'fundo6';
images[5] = 'fundo7';
images[6] = 'fundo1';


for (var i = 0; i < images.length; i++)
{
  imageCount++;
}

function startSlideShow()
{

     document.getElementById( ''+images[currentImage]+'' ).click();

     currentImage = currentImage + 1;
     if (currentImage > (imageCount-1))
     { 
        currentImage = 0;
     }

}
setInterval('startSlideShow()', 3000);


</script>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal, depois de pesquisar bastante, consegui a solução, tem que registrar o evento antes de executar:

 

<script type="text/javascript">

 

var imageCount = 0;

var currentImage = 0;

var images = new Array();

 

images[0] = 'fundo2';

images[1] = 'fundo3';

images[2] = 'fundo4';

images[3] = 'fundo5';

images[4] = 'fundo6';

images[5] = 'fundo7';

images[6] = 'fundo1';

 

 

for (var i = 0; i < images.length; i++)

{

imageCount++;

}

 

function startSlideShow()

{

// SE o navegador não conheça o evento, registra:

if(typeof HTMLElement!='undefined'&&!HTMLElement.prototype.click)

HTMLElement.prototype.click=function(){

var evt = document.getElementById(''+images[currentImage]+'').ownerDocument.createEvent('MouseEvents');

evt.initMouseEvent('click', true, true, document.getElementById(''+images[currentImage]+'').ownerDocument.defaultView, 1, 0, 0, 0, 0, false, false, false, false, 0, null);

document.getElementById(''+images[currentImage]+'').dispatchEvent(evt);

}

 

document.getElementById( ''+images[currentImage]+'' ).click();

 

currentImage = currentImage + 1;

if (currentImage > (imageCount-1))

{

currentImage = 0;

}

 

}

setInterval('startSlideShow()', 15000);

 

 

</script>

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.