2012-05-15 32 views
2

當瀏覽器關閉時,我已經實現了一些功能。Java Script關閉IE8窗口

window.onbeforeunload = function (evt) { 

    evt = (evt)? evt:event; 
    clickY = evt.clientY; 
    altKey = evt.altKey; 
    keyCode = evt.keyCode; 

if (altKey == true && keyCode == 0){ 
      //Make call to the server to clear the cache     
    }else if(clickY < 0){ 
    //Make a call to the server to clear the cache 
    }else { 
     return; 
    }    
}; 

現在在上面的代碼中的問題是當過我按下通過點擊地址欄或進入我刷新頁面刷新按鈕,我的代碼給我警報(「21112」),我不想因爲只有當瀏覽器關閉時,該調用纔會觸發。 所以有人可以幫助我實現這一目標。

+0

然後檢查輸入密鑰和F5鍵... – gdoron

+2

你不能這樣做 - 噹噹前頁面被導航離開時觸發事件 - 這意味着導航到不同的頁面或瀏覽器關閉 – ManseUK

+0

@gdoron它總是給鍵碼0 – BOSS

回答

7

window.onbeforeunload事件在你的頁面被調用之前是unload ed。 沒有辦法檢查它是刷新還是瀏覽器窗口關閉事件。

它觸發不同的場景MSDN

  • 關閉當前窗口。
  • 通過輸入新地址或選擇收藏夾導航到其他位置。
  • 單擊指向其他文檔的錨。
  • 調用anchor.click方法。
  • 調用document.write方法。
  • 調用document.close方法。
  • 調用window.close方法。
  • 調用window.navigate或NavigateAndFind方法。
  • 調用location.replace方法。
  • 調用location.reload方法。
  • location.href屬性指定新值。
  • 通過INPUT type=submit控件將表單提交到ACTION屬性中指定的地址,或調用form.submit方法。
  • 調用window.open方法,爲窗口名稱提供可能的值_self
  • 調用document.open方法。
  • 單擊後退,前進,刷新或主頁按鈕。

而你無法處理這個問題。

還要注意的是window.onbeforeunload事件應該通知他離開頁面,處理函數應該將包含在確認彈出return字符串值(除Firefox 4+bug)用戶。

您無法強制用戶留在頁面上。

注:你可以用onbeforeunload做的唯一一件事就是通知他離開你的頁面 (用戶,這是因爲一些頁面可以打開另一個頁面等...和垃圾郵件的用戶這是安全限制)。

如果您想在卸載窗口之前進行AJAX調用,您需要使用onunload事件。請注意,您的AJAX呼叫必須是我synchronus。異步調用不起作用。

0

this線程中的那個人說他的方法基於onbeforeunload事件在IE中工作。然而,你最好的(和跨平臺的)機會做你想做的就是設置一個Ajax polling requesthere is a nice demo)來檢查自上次用戶活動以來經過了多少時間並相應地清除緩存。

0

我在這個問題上工作了一段時間,所以我會向你解釋我發現了什麼。

1)window.onbeforeunload事件由每個瀏覽器處理有點不同 - 我看到會話一旦事件觸發就會丟失,無論用戶是否選擇留在頁面上。

2)Web應用程序根本沒有權力阻止用戶關閉瀏覽器或從頁面導航(出於顯而易見的原因),但通過實現服務器端鉤子,我可以調用必要的清潔高達碼僅當瀏覽器被關閉,所以我沒有打擾提示用戶(這是一種像劫持反正他們的瀏覽器)

如果您需要關閉該窗口,然後你要促使他們之前提示用戶當他們輸入新的網址時也是如此。他們是一個一樣的