2016-07-24 8 views
2

onbeforeunloadは、ユーザーが記入している形式のページに一貫して動作させようとしています。私は、次のことを期待している:RailsでonbeforeunloadがChromeブラウザで一貫して動作しない

  • 私は別のページへのリンクをクリックすると、それは私がページを更新すると、それはユーザー

を促すユーザー

  • を促すアイム現在Google Chromeの下でテストしていますが、私はいくつかのバリエーションを試していますが、今は以下を使用しています。

    <script> 
    
        $(document).on('ready page:load', function() { 
        $(window).on('beforeunload', function() { 
         return "You should keep this page open."; 
        }); 
        }); 
    
    </script> 
    

    私はプロンプトが表示されることがありましたが、一貫して表示されませんでした。私はこれが上記のコードとの矛盾と、turbolinksを指摘するかもしれないと考えました。しかし、上記の期待される結果を得るための修正を見つけることができませんでした。

    ---更新:

    最終的に使用したコードは次のとおりです。

    <script data-turbolinks-eval="false"> 
    
    $(document).ready(function() { 
        form_modified=0; 
    
        $('#report-form *').change(function(){ 
        form_modified=1; 
        }); 
    
        $("#report-form input[name='commit']").click(function() { 
         form_modified = 0; 
        }); 
    }); 
    
    $(document).on('page:before-change', function() { 
    
        if ($("#report-form").length > 0) { 
        if (form_modified==1) { 
         if (confirm("There are unsaved changes, click \"Cancel\" to remain on the page.")) { 
         // clicks "OK", nothing here means 
         } else { 
         // clicks "Cancel" 
         event.preventDefault(); 
         } 
        } 
        } 
    }); 
    
    </script> 
    

    この方法は、ページの更新のために働くか、しかしウィンドウで「X」が出て出ていません...

  • 答えて

    1

    Turbolinksは、シナリオのこの種のpage:before-changeイベントを提供しています。

    なぜ私はの最初のハンドラでに2番目のハンドラをバインドするのか分かりません。 windowオブジェクトは、[ターボリンク]リンクをクリックしても変更されません。

    関連する問題