2014-02-11 61 views
1

我試圖在用戶關閉瀏覽器時發出放置請求來保存一些東西。 我使用的角度,我試過使用onbeforeunload和onunload事件,但沒有得到它以我想要的方式工作。我有一個資源我想更新。當用戶關閉瀏覽器時,把http放入

$window.onbeforeunload = function(){ 
     myResource.foo = closingBrowser(); 
     myResource.$update();} 

隨着小提琴手的運行,我看到這不會做一個請求。不是當我使用$window.onunload。但是,如果我輸入返回語句onbeforeunload彈出確認框,並且當我單擊確定時,提琴手顯示放入請求已完成。現在我不想要這個彈出窗口,我只想在用戶關閉瀏覽器時放棄。

有沒有辦法讓我用這些方法做到這一點,或者我必須以其他方式解決它(建議非常感謝)?

更新:

我做了一些更多的測試,並發現了一些不一致的行爲。在Internet Explorer(11)中:如果我有返回語句,則有經典彈出窗口。但是,如果我按取消並返回頁面,它只會發送PUT。如果我按OK離開,PUT不會發出。

鉻:無論我按取消返回,還是確定離開,仍然發送PUT。另一個'黑客'(?)在chrome中工作,但不是,即沒有返回時(沒有彈出,這是想要的行爲),是在$update()之後有一個循環,如:while(!myResource.$resolved){}(或者只是一個for-loop迭代幾百萬次也行得通,但它看起來很醜,)chrome實際上發送了PUT(IE沒有)。

你認爲這會在IE中複製嗎?

我沒有對firefox做過廣泛的測試,但是我做的很少,看起來更像chrome。

回答

0

你不能逃避這個彈出窗口(「你想關閉這個窗口bla bla bla ...」)。 我認爲最好的辦法是下一個:

  1. 如果用戶關閉當前標籤頁,瀏覽器會顯示彈出你的文字
  2. 您發送HTTP PUT請求到服務器,當HTTP請求會調用成功回調你願意,演出自定義彈出(「您的設置或其他東西保存唧唧歪歪)通過使用window.close
+0

  • 關閉窗口有沒有辦法來發送HTTP PUT沒有彈出?我不希望保留用戶在頁面上或任何其他地方,只需在瀏覽器或選項卡關閉時發送一個推子。 – Gustav

  • +0

    如果頁面將被關閉,瀏覽器將中止您的put查詢 –

    相關問題