我在可编辑的表格中显示某些记录。当用户在编辑弹出的记录时尝试重新加载表时,会警告有关未保存数据的记录。
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 。
但没有任何效果......如何阻止提示?
答案 0 :(得分:36)
使用
window.location=window.location;
而不是
location.reload();
为我工作。
答案 1 :(得分:1)
答案 2 :(得分:1)
我解决了这个问题,并且仅将数据发送为 GET 而不是 POST ,
我不满足所有需求,但它有效....
我也在使用 location.reload();
答案 3 :(得分:1)
行为是正确的。根据w3schools重新加载有一个参数 forceGet ,默认为false,因此如果你有POST提交,浏览器将尝试重新发送该POST数据,因此,它需要你的确认。 Firefox做得很好,谷歌浏览器的行为类似于 forceGet
的默认值为truehttp://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
答案 4 :(得分:0)
避免该提示的方法是不要创建用户尝试重新加载POST结果页面的情况。
答案 5 :(得分:0)
试试这个。
setTimeout (function () {
window.location.reload();
},0);