2012-07-22 7 views
5

Tengo un quiosco que procesa retratos de personas. Se está ejecutando en cromo.Extensión de Chrome para monitorear un quiosco y volver a cargar si es necesario

Una de cada 200 personas que usan el quiosco lo congelan durante el proceso. Cuando se congela, nunca aparece el "ah snap" y la página simplemente se cuelga.

Me preguntaba si es posible hacer una extensión para controlar la página y comprobar un latido del corazón - Si no se ve después de 30 segundos vuelva a cargar la ventana.

Cualquier ayuda sería genial.

+0

Esto no debería suceder. ¡Debes depurar tu aplicación ejecutándose en tu navegador chrome! Parece que te has quedado sin memoria. ¿Sacas fotos viejas? – gronke

+0

Estoy de acuerdo. Pero no es tan simple. no está relacionado con la memoria. Algunos de los quioscos procesarán a miles de personas antes de que suceda, pero podrían suceder dos veces seguidas. Podría ser un error de lienzo, ya que cuando se bloquea la imagen de la cara en el lienzo se convierte en un círculo rojo y negro. Y nunca estoy llenando donde algo así debería suceder. –

Respuesta

5
  1. tener un script contenido en la página de kiosco enviar un mensaje cada X segundos volver a la página de fondo

    En el guión contenido:

    var port = chrome.extension.connect({ name: "keep-alive" }); 
    
    port.postMessage('is-alive', { alive: true }); 
    
    setInterval(function() { 
        port.postMessage('is-alive', { alive: true }); 
    }, 1000 * 15); 
    
  2. Si la página de fondo detecta el mensaje no ha regresado después de un cierto tiempo y luego volver a cargar la pestaña

    En la página de fondo:

    var last = Date.now(); 
    var interval = 1000 * 15; 
    
    chrome.extension.onConnect.addListener(function (port) { 
        if (port.name === 'keep-alive') { 
         port.onMessage.addListener(function (data) { 
          if (data.type === 'is-alive' && data.payload.alive === true) { 
           last = Date.now(); 
          } 
         }); 
        } 
    }); 
    
    setInterval(function() { 
        if (Date.now() - last > interval) { 
         // Reload the tab... 
        } 
    }, interval); 
    

Para obtener información sobre la recarga de la ficha, consulte la documentación chrome.tabs. Tendrá que agregar tabs a su lista de permisos en el manifiesto.

Si desea obtener más información acerca del envío de mensajes, consulte los documentos Messaging.

+0

"Volver a cargar la pestaña" -> Eche un vistazo a la API ['chrome.tabs'] (http://code.google.com/chrome/extensions/tabs.html). –

Cuestiones relacionadas