2012-07-22 8 views
5

Mam kiosk, który przetwarza portrety ludzi. Działa w chrome.Rozszerzenie Chrome do monitorowania kiosku i ponownego ładowania w razie potrzeby

Jedna na 200 osób, które korzystają z kiosku, kończy w ten sposób zamrażaniem. Kiedy się zawiesza, nigdy nie dostaję "ah snap", a strona trochę się zawiesza.

Zastanawiam się, czy możliwe jest wykonanie rozszerzenia w celu monitorowania strony i sprawdzenia bicia serca - jeśli nie jest widoczne po 30 sekundach, ponownie załaduj okno.

Każda pomoc będzie świetna.

+0

To nie powinno się zdarzyć. Należy debugować aplikację uruchomioną w przeglądarce Chrome! Wygląda na to, że zabrakło Ci pamięci - czy usuwasz stare portrety? – gronke

+0

Zgadzam się. Ale to nie jest takie proste. to nie jest pamięć związana. Niektóre kioski będą przetwarzać tysiące ludzi, zanim się to stanie, ale może się zdarzyć dwa razy z rzędu. Może to być błąd na płótnie, ponieważ gdy się zawiesza, obraz na płótnie zamienia się w czerwone i czarne kółko. I nigdy nie wypełniam tego, co powinno się stać. –

Odpowiedz

5
  1. mieć zawartość skryptu na stronie kiosku wysłać wiadomość co X sekund z powrotem do strony tle

    W skrypcie zawartość:

    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. Jeśli strona tła wykrywa wiadomość nie powrócił po pewnym czasie, a następnie ponownie wczytać kartę

    Na stronie w tle:

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

uzyskać informacje dotyczące przeładunku kartę można znaleźć w dokumentacji chrome.tabs. Będziesz musiał dodać tabs do listy uprawnień w manifeście.

Aby uzyskać więcej informacji na temat przekazywania wiadomości, zobacz dokumentację Messaging.

+0

"Ponownie załaduj kartę" -> Obejrzyj interfejs API ['chrome.tabs'] (http://code.google.com/chrome/extensions/tabs.html). –

Powiązane problemy