1

重複の可能性:
「このページから移動してもよろしいですか?」を表示する方法 変更がコミットされたのはいつですか?

Stackoverflowには非常に興味深い機能があります。新しい質問を書き始めた後、ページから移動しようとすると、このページを離れることを確認するアラートが表示されます。これは、新しいアドレスを入力してアドレスバーに入力する場合でも、進む/戻るボタンを使用する場合でも機能します。

これはどのように作動しますか?アラート自体についてはあまり知りたくありません。具体的には、アラートをトリガーしているイベント/コードについて知りたいと思います。

ありがとう!

4

4 に答える 4

4

textareaが修正されると、フラグが設定されます。unload()ウィンドウのイベントでフラグがチェックさalert()れ、必要に応じてが表示されます。このようなもの:

var textAmended = false;
$("textarea").change(function() {
    textAmended = true;
});

$(window).unload(function() {
    if (textAmended) {
        alert('You started writing a question...');
    }
});

undo()の詳細

于 2012-12-12T10:35:45.930 に答える
0

これは通常、textarea、inputなどの値をチェックし、以下のように文字列を渡すか何も渡さずにwindow.onunload関数を変更することによって行われます。

$('textarea').change(function() {
    if( this.value == "" ) {
        window.onbeforeunload = null;
    }else{
        window.onbeforeunload = "Are you sure you want to leave?";
    }
});

これにより、組み込みの確認がトリガーされます。

于 2012-12-12T10:46:46.567 に答える
0

現在のウィンドウから移動するか、ウィンドウを閉じるだけで確認が必要だと思います。

http://jsfiddle.net/tLWZX/

$(window).on('beforeunload', function() {
    return 'You have unsaved changes.';
});
于 2012-12-12T10:47:46.223 に答える
0
window.onbeforeunload = exit;
function exit() {
var t = 0;
$("textarea").each( function() {
var v = $(this).val();
if(v!="") {
t=t+1;
}
});
if(t>=1) {
return "You Have Some text written in textareas. Still you want to leave?";
}
}

あなたが望んでいたのは、最善かつ純粋な方法です!

http://jsfiddle.net/p4NPh/

于 2012-12-12T11:11:17.100 に答える