2016-07-18 18 views
1

変更を保存せずにタブを変更する前にユーザに警告するメッセージを表示する必要があります。ユーザーがタブのみを変更するため、このプロセスではブラウザのURLは変更されません。AngularJSタブを変更する前にブラウザダイアログ保護を表示する方法

URLが変更されないため、SetPristine、SetDirtyは私を助けません。このシステムブラウザのポップアップを手動で表示する方法はありますか?同じスペースで同じアラートを作成する方法を教えてもらえませんか(ウェブサイトの上部中央に配置されています)。

私は以下の図のような結果を得たいと考えています。

enter image description here

事前に感謝:)

答えて

1

何あなたが求めてする角度唯一のものではありません。あなたは純粋なjavascriptでそれを行うことができます。

お問い合わせはbeforeUnloadイベントです。ここで

mozillaからいくつかのサンプルコードです:

window.addEventListener("beforeunload", function (e) { 
    var confirmationMessage = "\o/"; 

    e.returnValue = confirmationMessage;  // Gecko, Trident, Chrome 34+ 
    return confirmationMessage;    // Gecko, WebKit, Chrome <34 
}); 

この例では、あなたのダイアログのテキストに戻り値を設定する必要がある1つを表示するには、ダイアログボックスを防ぎ、しかし:

window.addEventListener("beforeunload", function (e) { 
    var confirmationMessage = "\o/"; 
    return "You will loose any unsaved changes, by leaving the page" 
}); 

mozillaページはさらに詳しく説明します

これは、他のコードをイベントハンドラに配置して、またはデータ損失についてユーザに知らせるための何らかの他のダイアログが表示されます。


何をしたいことはタブの変更については、実際にある場合には、クリーンな方法は今reasonably well supportedあるPage Visibility APIを使用することです。何をしたい

はもっとそうのような今である:あなたの答えが、我々のシステムのための

document.addEventListener("visibilitychange", handleVisibilityChange, false); 
+0

おかげで、ユーザーが別のタブを選択すると、SPA(単一ページのアプリケーション)と、警告ダイアログが表示されますです。その理由は、URLが変更されないので、イベント "beforeunload"は起動されません。 (locationChangeStart)など、このイベントや角度イベントをトリガする方法はありますか? – Ellbar

+0

@Ellbarあなたの説明は 'locationChangeStart'とは何の関係もなく、URLはそのタブ*と同じです。それはまだ "ロードされている"、あなたが求めていることは、私が思っていたものとはかなり異なっています。タブを変更するだけでデータを失うべきではありません... – Pureferret

+0

データを保存せずに選択したタブを離れる前に保護を表示する必要があります。私は簡単にカスタムダイアログを表示できることを知っていますが、ウェブサイトから離れるときに同じような警告を出したいと思います。私たちは、プロジェクトで 'angular-unsavedChanges'を使用します。 – Ellbar

関連する問題