アプリのデスクトップ バージョン用に既に作成した jQuery コードを使用して、モバイル サファリ/iPhone Web アプリを構築しようとしています。私が抱えている問題は、Web アプリが実行されている状態で携帯電話がスリープ状態になると、それを起動すると (スライドしてロックを解除すると)、JavaScript イベント ハンドラーが機能しなくなることです。この場合、onclick イベントを介して AJAX 更新を実行していたリンクをクリックすると、実際には新しい Safari ウィンドウでページを開いてリンクをたどり、ネイティブの iPhone アプリの外観が損なわれます。
動作を停止するコード:
$(function() {
var ajaxLoad;
var ajaxClick = function(e) {
e.preventDefault();
e.stopPropagation();
$("body").load( $(this).attr("href"), ajaxLoad );
}
ajaxLoad = function() {
$(this).find("a").click( ajaxClick );
}
$("a").bind( "click", ajaxClick );
});
コードが機能すると、リンクの結果が Web アプリ フレームで開きます。リンクが切れると、コードが新しいサファリ ウィンドウで開き、実際のアプリの外観が損なわれます。