前提・実現したいこと
confirm()によって表示されるダイアログのYesNoの選択結果に応じて画面遷移の有無を制御したい。
発生している問題・エラーメッセージ
ボタンをタップした際に以下のような処理が走るボタンを実装したところ、iphone上のmonacaデバッガー(9.0.1)でconfirmのダイアログは表示されるもののYesを選択してもconfirmFlgがtrueの判定にならず、サイドボタンをタップすると画面遷移が起こり、遷移後に2回目のconfirmダイアログ表示がされてしまいます。
期待値は1回ボタンをタップしてconfirmダイアログでYesを選択した場合すぐに画面遷移をして欲しいのですが...
var confirmFlg = window.confirm("画面を切り替えますか?"); if(confirmFlg == true){ window.location.href = "Aページへのリンク"; }else{ //何もしない }
試したこと
・confirmFlgがtrue以外であった場合のフローに「alert("false");」を差し込んで実行したところ、1回目のタップでは以下の順でダイアログが表示された。
①alertダイアログ
②confirmダイアログ
このconfirmダイアログでYesを選んでも画面遷移は起こらず、再度ボタンをタップするとその瞬間画面遷移が発生した。ちなみにmonaca localkit上でのシミュレータ上では1回目のボタンタップで画面遷移が発生し、alertダイアログはそもそも表示されなかった。
→ ・iOS特有?
・confirmダイアログの選択結果を受け取る前に後続の処理が走っている?
・コード順で言うとconfirmダイアログ、alertダイアログの順なのに表示順は逆
→ダイアログを出す命令がコード順で溜め込まれて、先入れ後出しで実行されている??
補足情報(FW/ツールのバージョンなど)
アプリのcordovaのバージョン:9.0
テストデバイス:iphone x(iOS13.1)
monacaデバッガーのバージョン:9.0.1
すごく基本的な部分で躓いているような気がするのですが、アプリ開発自体初めてでして、皆様のお力をお借りしたく存じます。
よろしくお願いします。
10/21追記
Android端末でデバッグしてところ期待値通りの挙動をしました。
やはりiOSだけ...
回答2件
あなたの回答
tips
プレビュー