概要: JavaScript 確認ダイアログで [OK] ボタンをクリックすると、そのセクションのコードが実行されません。
再現する手順:
window.location = 'myApp://openMyAppUrl' ;
timeoutIpad = setTimeout( function(){
var timeoutFired = new Date();
var timeElapsed = timeoutFired.getTime() - start.getTime();
if( timeElapsed < 3000){
if( confirm("You need app to continue.")){
if(timeElapsed < 10000){
var x = 1+1;
window.location="http://google.com/getMyApp";
}
}
}
}, 200);
//Timeout values of 200, 500, 1500 were attempted but same results
再現するには:
1) ウェブページで上記の js コードを使用します。2) 最初の [OK] をクリックし、確認ダイアログから [OK] をクリックします。
期待される結果:アプリが存在しない場合、 http: //google.com/getMyAppへのリダイレクトが 10 秒以内に発生するはずです。
実際の結果: confirm() ダイアログの true 条件のサブルーチンは実行されません。以下は、xcode コンソールに表示されます。
11 月 5 日 09:24:06 Tests-iPad MobileSafari[327] : * -UIApplication runModal でのアサーションの失敗:、/SourceCache/UIKit/UIKit-2903.23/UIApplication.m:9465 11 月 5 日 09:24:06 Tests-iPad MobileSafari[ 327] : * WebKit は webView:runJavaScriptConfirmPanelWithMessage:initiatedByFrame でキャッチされていない例外を破棄しました: デリゲート: 渡されたビューにはウィンドウがありません。
バージョン: 7.0.0-7.0.3 7.0.3 で問題が修正されたというレポートを見ましたが、表示されません。