2016-04-18 6 views
1

私のアプリケーションはMVC5です。ユーザーがブラウザタブを閉じると警告したいと思います。 私はこの解決策が見つかりましたSetting onbeforeunload on body element in Chrome and IE using jQuery、私はいくつかのケースでTelerikグリッド内のカスタムコマンドボタン()location.hrefを使用する以外は素晴らしい作品。 は、次のことをしようとしました:onbeforeunload location.hrefを使用したナビゲーション

$(window).bind('hashchange', function() { 
       validNavigation = true; 
    }); 

希望がページを残している場合、ユーザーを尋ねる避けるために。 ブラウザタブを閉じる前にユーザーに警告するより良い方法はありますか?

+0

なぜハッシュチェンジですか?質問が私に矛盾しているようです。 –

+0

おそらく、haschangeはページの場所の変更を検出する正しい方法ではありません。 location.hrefを使用すると、正しい方法でonbeforeunloadを上書きすることができませんでした。使用されたソリューション:$( "a")。bind( "click"、function(){ validNavigation = true; }); – hncl

答えて

0

これを試してみてください;)

は、このコードではいくつかの変更が必要になります。

window.onbeforeunload = function() { 
    if(validNavigation){ 
    validNavigation = false; 
    /* if this click is valid means user action is not close window or reload page then just return; */ 
    return; 
    } 

    /* Want to ask user before leaving the page */ 
    return "Are you sure you want to leave this page bla bla bla?"; // you can make this dynamic, ofcourse... 
}; 


validNavigation = true; 
$(document).on('click', '.validNavigation', function(){ 
    validNavigation = true; 
}); 

は今、あなたは何をする必要があるか、あなたがonbeforeunloadメッセージを表示したくない人のためのすべてのリンクにvalidNavigationクラスを追加することですユーザーに。コメントを1として

UPDATE:あなたがユーザーに警告を表示したいと考えていません

​​

たアクションの場合は、単純にvalidNavigation = true;を設定し、それは場所の変更を引き起こす可能性が後に文を置きます。

+0

ありがとう、良いアプローチのように聞こえる;しかし、私はこれにクラスを追加する方法を見つけることができませんでした: function gotopage(args){ window.location.href = [args]; } – hncl

+0

この警告をユーザに表示したくない場合は、クラスを 'a'に追加するか、またはいくつかのアクションに対して' validNavigation = true; 'を設定するか、 – itzmukeshy7

+0

うまくいった。 lightgalleryライトボックスを使用するときに期待してください。 $( '#lightgallery')を追加する必要がありました。bind( "click"、function(){ validNavigation = false; });ありがとうございます – hncl

関連する問題