私はちょうどこれを自分で解決しました。最初はプロセスAPIを使用しようとしましたが、キオスクで使用しているChromeのバージョンではありません。私は他のもの(TUIOタッチ入力など)を処理するために書いた拡張機能を使って自分のキオスクを構成しました。そのため、私は既にそれを追加する場所がありました。
私のキオスクでは、ファイルを表示するクロムが見つかったため、ローカルの小さなWebサーバーが動作しています。// URLは首の痛みが大きすぎます。ファイルURLを使用している場合、マニフェストはhttp URLではなくマニフェストと一致する必要があります。
ここmanifest.jsonをより重要なものです:
"content_scripts": [
{
"matches": ["http://*/*"],
"js": ["kiosk.js"]
}
],
"background": {
"scripts": [
"background.js"
]
},
"permissions": [
"webNavigation",
"tabs",
"runtime",
"<all_urls>"
],
は、これはkiosk.jsに入る:
chrome.runtime.onMessage.addListener(
function(message, sender, response) {
response(message);
}
);
は基本的に、それはpingの応答者です。メッセージを送信すると、すぐにメッセージが送信されます。ここで
は、その全体がbackground.jsです:
var tab_id = -1;
var send_count = 0;
var recv_count = 0;
chrome.webNavigation.onBeforeNavigate.addListener(function (details) {
tab_id = details.tabId;
});
setInterval(function() {
if (tab_id == -1) return;
if (send_count > recv_count+2) {
chrome.tabs.reload(tab_id);
send_count = recv_count = 0;
}
++send_count;
chrome.tabs.sendMessage(tab_id, "heartbeat", function(resp) {
if (resp) {
recv_count = send_count;
}
});
}, 1000);
それは現れて、私のページをリッスンし、タブのIDをつかみます。レスポンダにpingを実行します。ドキュメントによれば、エラーが発生した場合、sendMessageは応答なしで呼び出されますが、それは当てはまりません。実際には全く呼び出されません。どちらの場合にも対応できるようにコード化しました。
ハンドラではもともと++ recv_countと言っていましたが、これについて考えると、受信ページの遅さにはもう少し頑強になります。
あなたのキオスクがLinuxであると仮定すると(それはあなたが気違いではない)、キオスクにssh'ingしてps axfww |grep render
を実行し、リストされている最初のプロセスを強制終了するだけで簡単にテストできます。あなたは病気のコンピュータの画面が1秒間表示され、それから再び読み込まれます。