2012-09-27 57 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

相關問題