0

アプリケーションで jQuery を使用しています。データを変更したかどうかを検証する Javascript コードがいくつかあります。ユーザーがいくつかの値を入力し、他のリンクまたは何かをクリックすると、次のようなポップアップが表示されます。

「このページから移動してもよろしいですか? ... [OK] をクリックして続行するか、[キャンセル] をクリックして現在のページにとどまります。」

IE7、IE9、Firefox、その他のブラウザで問題なく動作します。しかしIE8では、次のようなアラートボックスが生成されます:

「このスクリプトの実行を中止してください。このページのスクリプトにより、Web ブラウザの実行が遅くなります。実行を続けると、コンピュータが応答しなくなる可能性があります」.

以下は、問題を引き起こす私のJavascriptです。

$(document).ready(function()
    {
        // Flag to display warning.
        // If needToConfirm = true warning message will be displayed. 
        needToConfirm = false; 
        window.onbeforeunload = askConfirm;
        
        function askConfirm()
        {
            if (needToConfirm)
            {
                // Message to be displayed in Warning.
                return "Your data will be lost.";
            }       
        }
        
        // Add all form elements in argument.
        $("select,input,textarea").live('change',function ()
        {
            needToConfirm = true;
        });
        
        // Add all form elements in argument.
        $("select,input,textarea").live('keypress',function ()
        {
            needToConfirm = true;
        });
        
              
        // Use "class = noWarning" for save or cancel button.
        $(".noWarning").click(function () 
        {
            needToConfirm = false;
        });
             
    });

それはコードの問題window.onbeforeunload = askConfirm;ですか?

編集

次の行がIE8で問題を引き起こすことがわかりました

$("select,input,textarea").live('keypress',function ()
        {
            needToConfirm = true;
        });

これに対する他の代替手段はありますか?

4

0 に答える 0