11

Al igual que el título dice: setInterval solo está activando su devolución de llamada una vez.setInterval no funciona (disparando solo una vez) en la extensión de Google Chrome

manifest.json:

{ 
    //... 
    "content_scripts" : [{ 
     "js" : ["code.js"], 
     //... 
    }], 
    //... 
} 

code.js (ejemplo):

setInterval(alert('only shown once'),2000); 

por qué y cómo podría solucionarlo? El código funciona bien fuera de una extensión (incluso en un bookmarklet).

+1

posible duplicado de [JS setInterval se ejecuta solo una vez] (http://stackoverflow.com/questions/7746505/js-setinterval-executes-only-once) – qwertymk

Respuesta

31
setInterval(function() { alert('only shown once') },2000); 

lo necesario para pasar una referencia función como alert y no un valor de retorno alert()

+0

Oh, tienes razón. Hay un problema en otro lado y mi intento de verificarlo con alerta fue descuidado. Hay una referencia en el código real. –

+0

¿Podría explicar por qué esto se comporta de la manera en que lo hace? Soy relativamente nuevo en JavaScript y me gustaría aprender todo lo que pueda sobre él. @qwertymk – J2N

+0

@JLaw [** Eche un vistazo a esta respuesta para una mejor explicación **] (http://stackoverflow.com/a/7746522/465546) – qwertymk

6

setInterval no funciona en absoluto.

El primer argumento debe ser una función , le está pasando el valor de retorno de alert() que no es una función.

utilizar la versión de tres argumentos:

setInterval(function,time,array_of_arguments_to_call_function_with); 
setInterval(alert,2000,['only shown once']); 
+0

Oh, tienes razón. Hay un problema en otro lado y mi intento de verificarlo con alerta fue descuidado. Hay una referencia en el código real. –

1

La forma en que lo escribió que está mal:

setInterval() quiere una función y un valor numérico: setInterval(function(){//your code}, timeInterval).

+0

Tienes razón. Hay un problema en otro lado y mi intento de verificarlo con alerta fue descuidado. Hay una referencia en el código real. –

Cuestiones relacionadas