2011-04-20 93 views
0


我需要在Internet Explorer(6,8和9)窗口關閉時處理,以便詢問他對其的確認。我嘗試了unbeforeunload,但是,正如你所知道的那樣,當任何鏈接被點擊時,它也被觸發,o表單被引用。有些人可以說使用事件鼠標座標,但有幾種方法可以打破這種驗證(例如Alt + F4)。當點擊鏈接並檢查是否在事件中時,還有一種方法可以將某些變量設置爲true,但這也不起作用,因爲我在頁面上有很多不同的鏈接,並且在某些情況下會多次觸發事件。
此外,我試圖解決這個問題,使用框架,如:使2幀,把我的頁面到一個框架,並與其他(零大小)處理器頁面onbeforeunload。這將工作得很好,但我們使用一組環境js,我們無法阻止下載,並且這些腳本刪除頁面上的任何幀,將整個頁面放在主窗口中 - 失敗...
任何人都可以,請提出其他建議嗎?在javascript中處理IE窗口關閉事件

+0

通常,對於一個正在關閉的窗口的反應是你首先應該避免的,因爲 - 正如你注意到的 - 這是非常不可靠的。你應該重新設計你的網頁/應用程序,這樣就沒有必要。窗戶關閉時你需要做什麼? – RoToRa 2011-04-20 12:53:56

+0

好吧,重點是 - 我不想這樣的檢查;但客戶確實如此。我覺得他們只是想避免錯誤的窗口關閉,以免「泄露未保存的數據」。我們會試圖說這不是更好的方法,但直到那個時候我們正在嘗試尋找解決方案。 thanx您的建議 – Egor 2011-04-20 13:03:06

+0

好吧,如果它只是爲了警告用戶,它可能會使用。點擊鏈接時設置變量是正確的方法。該事件以何種方式觸發多次? – RoToRa 2011-04-20 13:07:58

回答

0

如果您打算使用onbeforeunload(聽起來是正確的),您應該設置一個標誌,以便該事件只會詢問是否有理由留在頁面上。

var hasChanges = false; 

window.onbeforeunload = function() { 

    if (hasChanges) { 

     return "You have changes that will be lost if you continue leaving the page"; 

    }; 

}; 

然後你只需給變量設置爲true(hasChanges = true)如果有一個理由留在頁面上...所以,如果一切都沒有改變,你的點擊其他鏈接不會觸發對話框。

+0

咋,但是如果有什麼改變了,我點擊了一些不會離開頁面的鏈接 - 我會再次得到這個消息。我在頁面上有很多 – Egor 2011-04-20 12:01:50

+0

你可以在這些事件之前輕鬆地清除標誌... – davidsleeps 2011-04-20 22:58:38

+0

@Egor,等等,你是什麼意思點擊頁面內的鏈接導致這個?你的意思是回傳? – davidsleeps 2011-04-20 22:59:29