2012-07-22 26 views
5

Ho un chiosco che elabora ritratti di persone. Funziona in cromo.Estensione Chrome per monitorare un chiosco e ricaricare se necessario

Uno su 200 persone che utilizzano il chiosco finiscono con il congelamento durante il processo. Quando si blocca, non ottengo mai lo "scatto" e la pagina si blocca.

Mi chiedevo se è possibile creare un'estensione per monitorare la pagina e controllare un battito cardiaco - Se non viene visualizzato dopo 30 secondi, ricaricare la finestra.

Qualsiasi aiuto sarebbe grande.

+0

Questo non dovrebbe accadere. Dovresti eseguire il debug dell'applicazione in esecuzione nel tuo browser Chrome! Sembra che tu abbia esaurito la memoria: rimuovi i vecchi ritratti? – gronke

+0

Sono d'accordo. Ma non è così semplice. non è legato alla memoria. Alcuni dei chioschi elaboreranno migliaia di persone prima che accada, ma potrebbero verificarsi due volte di seguito. Potrebbe trattarsi di un errore di tela come quando si blocca l'immagine del volto nell'area di disegno si trasforma in un cerchio rosso e nero. E non sto mai facendo un riempimento dove dovrebbe accadere qualcosa del genere. –

risposta

5
  1. avere uno script contenuto nella pagina chiosco inviare un messaggio ogni X secondi torna alla sfondo della pagina

    Nello script contenuti:

    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. Se lo sfondo della pagina rileva il messaggio non è tornato dopo un certo tempo quindi ricaricare la scheda

    Nella pagina di sfondo:

    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); 
    

Per informazioni su come ricaricare la scheda, consultare la documentazione chrome.tabs. Sarà necessario aggiungere tabs all'elenco delle autorizzazioni nel manifest.

Se desideri saperne di più sul passaggio dei messaggi, consulta i documenti Messaging.

+0

"Ricarica la scheda" -> Dai un'occhiata all'API ['chrome.tabs'] (http://code.google.com/chrome/extensions/tabs.html). –