我在可编辑的表格中显示某些记录。当用户在编辑弹出的记录时尝试重新加载表时,会警告有关未保存数据的记录。
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();
}
}
}
当他单击“确定”重新加载页面时,Firefox会提示为
要显示此页面,Firefox必须发送信息,以重复之前执行的任何操作(例如搜索或订单确认)。
在Chrome中打开同一页面时,不会出现此类提示。
我试图通过设置window.onbeforeunload = null;
来避免这种情况,但仍然会出现提示窗口。
我也试过改变Firefox配置:
browser.sessionstore.postdata
根据Mozilla支持页面中的建议将0更改为1。
但没有任何效果..如何阻止提示?
运用
window.location=window.location;
代替
location.reload();
为我工作。
我解决了这个问题,并将数据仅作为GET而不是POST发送,
它不适合所有需要,但它的工作....
我也在使用location.reload();
行为是正确的。根据w3schools重新加载有一个参数forceGet默认为false,因此如果你有POST提交,浏览器将尝试重新发送该POST数据,因此,它需要你的确认。 Firefox这样做是正确的,谷歌浏览器的行为类似于forceGet的默认值为true
http://www.w3schools.com/jsref/met_loc_reload.asp
虽然window.location=window.location
或window.location=window.location.href
(或其他任何变体)在大多数情况下起作用,但当你使用像http://www.google.com#test这样的锚点时,这种方法不会刷新。当您已经在google.com上时,浏览器将执行与完成相同的操作,并通过添加#test来更改网址。浏览器将尝试在名称为test的页面中找到锚标记,并向下滚动到该标记,而不刷新浏览器。
在这种情况下工作的解决方案以及我遇到的任何其他情况都是window.location.reload(true);
希望这可以帮助,
Alexandru Cosoi
避免该提示的方法是不创建用户尝试重新加载POST结果页面的情况。
试试这个。
setTimeout (function () {
window.location.reload();
},0);