Sweetalert: バックナビでSwAlが消えない

作成日 2014年12月11日  ·  5コメント  ·  ソース: t4t5/sweetalert

コルドバ シェルで実行されている Jquery Mobile アプリで SwAl を使用する。 それはうまく機能しますが、1 つの小さな問題に対してです。
SwAl が起動し、ユーザーが Android アプリの [戻る] ボタンを押します。 バックグラウンドにあるものはすべて 1 歩後退しますが、SwAl はありません - SwAl は何らかの理由でそこに留まっています。

ユーザーが自分の電話に戻ったときにSwAlを非表示にするにはどうすればよいですか?

bug

全てのコメント5件

ここで推測しています。 コードを見せていただければ、もっと多くのことができるかもしれません。

sweetAlert を非表示にするには、ページを更新する必要があります。 Cordova または JQuery では、戻るボタンを押してもページは更新されず、状態が変わるだけなので、phonegap を使用して戻るボタン/ページ変更にイベント ハンドラーを配置して、甘いアラートを非表示にしてみてください。

これに対する回避策を見つけました。 swal ライブラリにもいくつかの変更を加える必要がありました。
私のコードでは、戻るナビゲーションと、swaal が開いているかどうかもチェックしています。
もしそうなら、私はそれを閉じて、デフォルトのナビゲーションも禁止します。

$(document).on("pagebeforechange", function(e, ob) { //戻るナビゲーションを防ぐため
if(ob.options.direction=="戻る" && swal.isOpen()){
swal.cancelAlert(); // 沼を閉じる
e.preventDefault(); // バックナビゲーションを防止
history.go(1); // ハッシュの変更を避ける
// false を返す;
}
})

// 開いているスイート アラートを閉じる/キャンセルします

window.swal.cancelAlert = function() {
closeModal();
};

// SWAL が開いているかどうかを確認します。

window.swal.isOpen = function() {
var modal= getModal();
if(hasClass(modal,"showSweetAlert")){
真を返す;
}else if(hasClass(modal,"hideSweetAlert")){
false を返します。
}そうしないと{
false を返します。
}
};

ここで参照コードを確認できます -- https://github.com/t4t5/sweetalert/pull/236

プル リクエストにあるように、 swal.close()使用するだけです。

このスクリプトを使用するだけで、私にとってはうまくいきます:

header("キャッシュ制御: 保存しない、キャッシュしない、再検証する必要がある、max-age=0");
header("有効期限: 1997 年 7 月 26 日土曜日 05:00:00 GMT");

このページは役に立ちましたか?
0 / 5 - 0 評価