Android および Chrome 専用の HTML5 アプリを開発しています。私が抱えている問題は、開いているブラウザのタブを追跡する必要があることに起因しています。これを行うには、各タブの sessionStorage に格納される一意の ID を作成します。次に、各タブがアクセスできる localStorage 配列に各 ID を登録することで、開いているタブを追跡します。
問題は、window.onunload イベントを使用してタブを閉じるときに、localStorage から ID を削除できないことです。コードはデスクトップ Chrome では問題なく動作しますが、Android では動作しません。
$(window).on('beforeunload', function () {
removeWindowGUID();
});
function removeWindowGUID() {
var guid = sessionStorage.getItem("WindowGUID");
var tmp = JSON.parse(localStorage.getItem("WindowGUIDs"));
tmp = tmp.remove(guid); // remove is a custom prototype fn
localStorage.setItem("WindowGUIDs", JSON.stringify(tmp));
}
このイベントは、ページをリロードするときに発生します。これは問題ありませんが、閉じるときではありません。pagehide イベントも使用してみました。