アプリケーションで 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;
});
これに対する他の代替手段はありますか?