編集可能なテーブルに特定のレコードを表示しています。ユーザーがレコードの編集中にテーブルをリロードしようとすると、ポップアップが保存されていないデータについてレコードに警告を表示します。
function cancelProcess()
{
if(noEditedRecords !=0)//number of edited records in the table
{
var processConfirmation = confirm("You've Edited "+ noEditedRecords +" Records. Are You sure to undo the Changes made?");
if (processConfirmation ==true){
window.onbeforeunload = null;
window.location.reload();
}
}
}
OKをクリックしてページをリロードすると、Firefoxは
このページを表示するには、Firefoxは、以前に実行されたアクション(検索や注文確認など)を繰り返す情報を送信する必要があります。
また、Chromeで同じページを開くと、そのようなプロンプトは表示されません。
window.onbeforeunload = null;
を設定してこれを回避しようとしましたが、まだプロンプトウィンドウが表示されています。
また、Firefoxの設定を変更して試してみました。
browser.sessionstore.postdata
から1に変更 Mozillaサポートページで提案されているとおり。
しかし、何もうまくいきませんでした。プロンプトを防ぐにはどうすればよいですか?
使用する
window.location=window.location;
の代わりに
location.reload();
私のために働きます。
私はこれを解決し、[〜#〜] post [〜#〜]の代わりに[〜#〜] get [〜#〜]としてのみデータを送信しました
すべてのニーズに合うわけではありませんが、うまくいきます。
location.reload();も使用していました
window.opener.location.href = window.opener.location;
私は決定を見つけました ここ
(Firefox 32およびChrome 38で正常にテストされました。)
このプロンプトを回避する方法は、ユーザーがPOST結果ページを再ロードしようとしている状況を作成しないことです。
これを試して。
setTimeout (function () {
window.location.reload();
},0);
動作は正しいです。 w3schoolsによると、reloadにはデフォルトでfalseであるパラメーターforceGetがあり、その結果POST submitがある場合、ブラウザーはPOSTデータであり、そのため、確認が必要です。Firefoxはこれを正しく実行し、google chromeは、デフォルトのtrueのように動作しますforceGet
http://www.w3schools.com/jsref/met_loc_reload.asp
http://www.google.com#のようなアンカーURLを使用している場合、_window.location=window.location
_または_window.location=window.location.href
_(またはこれの他のバリエーション)はほとんどの場合機能しますtest は、このメソッドでは更新されません。ブラウザは、すでにgoogle.comにアクセスしていて、#testを追加してURLを変更する場合とまったく同じことを行います。ブラウザーは、testという名前のページでアンカータグを見つけようとし、ブラウザーを更新することなく、そのタグまでスクロールします。
このケースと私が遭遇した他のケースで機能する解決策はwindow.location.reload(true);
です
お役に立てれば、
アレクサンドルコソイ