質問編集履歴

1 追記

shami5

shami5 score 1

2019/10/21 23:51  投稿

[Javascript]iOSアプリでwindow.confirm()でダイアログを出している最中に後続処理が走ってしまう
### 前提・実現したいこと
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だけ...
  • JavaScript

    24390 questions

    JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

  • iOS

    5415 questions

    iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

  • ダイアログ

    24 questions

    ユーザーにウィンドウやボックス等の形で個別で表示されるフォームであり、ユーザーに判断を促す目的で表示される。ユーザーが見逃す事のないよう、操作中のフォーム上にポップアップして表示される。

  • iPhone

    1265 questions

    iPhoneとは、アップル社が開発・販売しているスマートフォンです。 同社のデジタルオーディオプレーヤーiPodの機能、電話機能、インターネットやメールなどのWeb通信機能の3つをドッキングした機器です。

  • Monaca

    1238 questions

    「Monaca」はiOS、Android、Windows向けのアプリ開発に対応した、Cordovaベースのモバイルアプリ開発プラットフォームです。HTML5、JavaScriptといったWeb標準技術を用いてモバイルアプリ開発を行うことができます。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る