1

シンプルな時計/アラームである Windows 7 で Google chrome アプリを開発しています。JavaScript コードは、(タイマーを使用して) updateClock() 関数を 1 分ごとに呼び出して、新しいクロック値 (2:01pm >> 2:02pm >> 2:03pm >> など) をレンダリングし、アラームが発生したときに .mp3 ファイルを再生します。によるものである。

PCを長時間使わないと画面が消えます。それでも、適切な時間にアラームが鳴るので、updateClock() 関数が毎分呼び出されていることはわかっています。

ただし、(マウスを動かすかキーボードを押すことによって) 画面をオンに戻すと、現在の時刻が午後 3 時 30 分であるのに対し、アプリは画面がオフになったとき (たとえば午後 2 時 1 分) の時計の値を表示します。マウスをアプリの上に置くか、さらに 1 分待つと、アプリは適切な時刻 (午後 3 時 30 分) に更新されます。

Google chrome は、画面がオフのときに HTML ページのレンダリングを停止し、画面が再びオンになったときにクイック レンダリングを行わないようです。画面が再びオンになったときに時計をすばやく更新するためのJavaScriptまたはChrome APIの回避策はありますか?

私はクロムAPIを試しました:

chrome.idle.onStateChanged.addListener(updateClock);

そしてJavaScript:

window.addEventListener("pageshow", updateClock, false);

しかし、誰も助けませんでした。

アプリに必要なリソースを最小限に抑えたいので、毎秒起動してクロックを更新するタイマーを追加したくないことに注意してください。

編集:これが私が取り組んでいるサンプルプログラムです:

index.html:

<!DOCTYPE html>
<html>
 <head>
  <meta http-equiv="Content-type" content="text/html; charset=utf-8"/>
  <script type="text/javascript" src="main.js" ></script>
 </head>
 <body>
  <span id="hhDisplay" ></span>:<span id="mmDisplay" ></span>
 </body>
</html>

main.js:

function updateClock() {
var date = new Date();
hhDisplay.innerHTML = date.getHours();
mmDisplay.innerHTML = date.getMinutes();

var minuteOffset = ((60 - date.getSeconds()) * 1000) - date.getMilliseconds();

if (minuteOffset > 0)
    setTimeout(updateClock, minuteOffset);
else
    updateClock();
}

window.onload = function() {
chrome.idle.onStateChanged.addListener(function(newstate) { updateClock(); });
updateClock();
}

background.js

chrome.app.runtime.onLaunched.addListener(function() {
chrome.app.window.create("index.html",
{ id: "TestClock", minWidth: 400, minHeight: 300 }); });

マニフェスト.json

{ "name": "Clock Test", "version": "1.0",
"manifest_version": 2,
"minimum_chrome_version": "18",
"app": { "background": {  "scripts": ["background.js"] } },
"permissions": ["idle"] }
4

1 に答える 1