2012-09-27 73 views
13

我在可编辑表格中显示某些记录。当用户尝试重新加载表格而编辑弹出的记录时,会警告有关未保存数据的记录。阻止Firefox重新加载确认

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的提示为

要显示此页面,火狐必须发送将重复任何操作(如搜索或订单确认),这是信息

而当在chrome中打开同一页面时,不会出现这样的提示。

我试图通过设置来避免这种情况window.onbeforeunload = null;,但仍然出现提示窗口。

另外我试图通过改变火狐配置

browser.sessionstore.postdata;

更改0到1按照mozilla支持页面中的建议。

但没有工作..我如何防止提示???

+0

我有一种感觉,你需要的是来自不同你在问什么。你有没有机会展示你的代码? –

+0

@JesseJ已包含代码.. – Emmi

回答

0

避免该提示的方法是不创建用户尝试重新加载POST结果页面的情况。

+0

除了重新加载之外,还有什么方法可以将窗口恢复到以前的状态吗? – Emmi

+0

您可以使用Javascript并执行AJAX。 –

+0

@Emmi这取决于你想要什么样的先前状态。只需关注URL栏并按回车键,例如_may_就可以做你想做的事。 –

1
window.opener.location.href = window.opener.location; 

我发现决定here

(在Firefox 32和Chrome 38测试成功。)

+0

在Firefox上没有为我工作46.0.1 –

28

使用

window.location=window.location; 

而不是

location.reload(); 

为我工作。

+0

完美适合我。 –

0

试试这个。

setTimeout (function() { 
    window.location.reload(); 
},0); 
1

我解决了这个和发送的数据,因为只有得到代替POST

这我不能满足所有的需求,但它的工作原理....

我还使用location.reload();

0

该行为是正确的。根据w3schools重新加载有一个参数forceGet这是默认为false,并因此如果您有POST提交,浏览器将尝试重新发送该POST数据,因此,它需要您的确认。Firefox没有这种权利,和谷歌Chrome的行为像它的真正的默认forceGet

​​3210

window.location=window.locationwindow.location=window.location.href(或任何相关的变化)工作的大部分时间,当你使用像http://www.google.com#test这样的锚点网址将不会使用此方法进行刷新。浏览器将完成与您在google.com上时所做的完全相同的操作,并且您可以通过添加#test来更改网址。浏览器只会尝试在名称为test的页面中找到锚标签,然后向下滚动,而不刷新浏览器。

,在这种情况下,我遇到的其他任何情况下工作的解决办法是window.location.reload(true);

希望这有助于

亚历Cosoi

相关问题