para habilitar google funciona español definicion consola como comandos chrome caracteristicas attribute activar javascript jquery

habilitar - javascript definicion



Cómo saber si el navegador/pestaña está activo (6)

Posible duplicado:
¿Hay alguna forma de detectar si una ventana del navegador no está activa actualmente?

Tengo una función que se llama cada segundo que solo quiero ejecutar si la página actual está en primer plano, es decir, el usuario no ha minimizado el navegador o ha cambiado a otra pestaña. No sirve para nada si el usuario no lo está mirando y es potencialmente intensivo en la CPU, por lo que no quiero simplemente perder ciclos en segundo plano.

¿Alguien sabe cómo decir esto en JavaScript?

Nota: uso jQuery, así que si tu respuesta usa eso, está bien :).


Además de la respuesta de Richard Simões , también puede utilizar la API de visibilidad de página .

if (!document.hidden) { // do what you need }

Esta especificación define un medio para que los desarrolladores de sitios determinen de manera programática el estado de visibilidad actual de la página para desarrollar aplicaciones web eficientes con CPU y energía.

Aprende más


Intentaría establecer una bandera en los eventos window.onfocus y window.onblur .

El siguiente fragmento de código se ha probado en Firefox, Safari y Chrome, abre la consola y muévete entre las pestañas de un lado a otro:

var isTabActive; window.onfocus = function () { isTabActive = true; }; window.onblur = function () { isTabActive = false; }; // test setInterval(function () { console.log(window.isTabActive ? ''active'' : ''inactive''); }, 1000);

Pruébalo here .


Si está intentando hacer algo similar a la página de búsqueda de Google cuando está abierto en Chrome (donde ciertos eventos se activan cuando se "enfoca" en la página), el evento hover () puede ayudar.

$(window).hover(function() { // code here... });


Todos los ejemplos aquí (con la excepción de los de rockacola) requieren que el usuario haga clic físicamente en la ventana para definir el enfoque. Esto no es ideal, por lo que .hover() es la mejor opción:

$(window).hover(function(event) { if (event.fromElement) { console.log("inactive"); } else { console.log("active"); } });

Esto te dirá cuándo el usuario tiene su mouse en la pantalla, aunque todavía no te dirá si está en primer plano con el mouse del usuario en otra parte.


Usando jQuery:

$(function() { window.isActive = true; $(window).focus(function() { this.isActive = true; }); $(window).blur(function() { this.isActive = false; }); showIsActive(); }); function showIsActive() { console.log(window.isActive) window.setTimeout("showIsActive()", 2000); } function doWork() { if (window.isActive) { /* do CPU-intensive stuff */} }


blur eventos de focus y blur de la ventana:

var interval_id; $(window).focus(function() { if (!interval_id) interval_id = setInterval(hard_work, 1000); }); $(window).blur(function() { clearInterval(interval_id); interval_id = 0; });

Para responder al problema comentado de "Double Fire" y mantenerse dentro de la facilidad de uso de jQuery:

$(window).on("blur focus", function(e) { var prevType = $(this).data("prevType"); if (prevType != e.type) { // reduce double fire issues switch (e.type) { case "blur": // do work break; case "focus": // do work break; } } $(this).data("prevType", e.type); })

Haga clic para ver el código de ejemplo que muestra su funcionamiento (JSFiddle)