こんにちは、ころすけ(@wg_koro)です。
AndroidのChromeブラウザで変な挙動を発見しました。一応メモしておきます。
javascriptが止まらない
Chromeでページを見ている最中に、別のアプリに切り替えてもjavascript(js)が止まりません。
例えば下記のjsを仕込んだページ。
[javascript]
setInterval(function(){ console.log(‘Oh my god!’); }, 1000);
[/javascript]
setInterval(function(){ console.log(‘Oh my god!’); }, 1000);
[/javascript]
このページをChromeで表示して、ホームボタンを押してみましょう。あるいは、別アプリに切り替えてみましょう。
Chromeは裏側に回ったのに、’Oh my god!’ という文言を1秒おきに出力し続けます。これはsetIntervalだけでなく、setTimeoutでも確認できます。
試しにここにAjax通信を仕込んだら、裏側に回っても1秒おきに通信してました。
デフォルトのブラウザ
ちなみにデフォルトのAndroidブラウザだとこうなりません。
ブラウザが前面に出ている時は、jsは当然動きます。しかしホームボタンを押したり、別アプリに切り替えたりしてブラウザを裏側に移動させると動作が停止します。ブラウザを再度前面に表示させるとjsは再び動き出します。
バグ?仕様?
うーん、これってバグなんですかね?それとも仕様?
初期のAndroid Chrome(ベータ版)でも同じ挙動でした。裏側で動き続けるのは正しいような気もするし、でも標準ブラウザと比べると間違っている気もするし…。どっちだろう?
裏側にまわっても通信し続けるとなるとバッテリー食うだろうし・・・。やっぱりバグなんだろうか。
ちょっとIssue探して、なければ投稿してみようかな。