2012-04-25 273 views
1

我正在使用以下js在瀏覽器/窗口關閉前顯示彈出窗口。但它似乎並沒有工作。在瀏覽器窗口關閉前顯示jQuery彈出窗口

$(window).bind('beforeunload', function(e) { 
    $('#beforeclose').click(); 
}); 

我試圖展示的彈出框是prettyPopin。而#beforeclose是我試圖在窗口卸載之前綁定click事件的錨點的id。我注意到,原生js彈出窗口工作,但jQuery彈出窗口不起作用。

有沒有辦法實現我想要的?請向我解釋或向我推薦相應的鏈接,因爲我不是js的專家。

在此先感謝。

回答

3

你不能安全地做到這一點。

onbeforeunload旨在避免完全阻止用戶離開您的頁面。你應該做的唯一的事情是返回一個字符串和一條消息,爲什麼用戶可能不想離開頁面。該消息顯示給用戶unless he's using firefox

+0

我們可以這樣做任何其他辦法?請建議。 – xmaestro 2012-04-25 06:26:00

+0

不可以。如果可以的話,它會挫敗這些限制的目的,不是嗎? – ThiefMaster 2012-04-25 06:27:01

+0

所以,我是否理解只有原生的js警報才能停止偶數流程的執行?而且自定義彈出窗口無法做到這一點?只爲自己弄清楚事情;) – xmaestro 2012-04-25 06:31:58

0

嘗試從jQuery documentation更改爲

$(window).bind('beforeunload', function(e) { 
    $('#beforeclose').click(); 
    e.preventDefault(); 
    return false; // just in case.. 
}); 

event.preventDefault()

說明:如果此方法被調用時,事件 的默認操作將不會被觸發。

基本上,你綁定的功能是在beforeunload事件上顯示彈出窗口,但並不像瀏覽器窗口那樣阻塞瀏覽器。使用event.preventDefault()您將停止執行事件流程。

+0

'beforeunload'不喜歡這個工作。你只能返回一個字符串,如果他想離開頁面,可以在提示符下向用戶顯示可能(不是firefox)或可能不會(firefox)的字符串。 – ThiefMaster 2012-04-25 06:16:56

+0

Thanx人返回的東西停止關閉窗口。但有消息告訴我,如果我想離開該網頁或不...我不想要這個消息。我只想要我的jQuery彈出。請告訴我,如果有一種方法.. – xmaestro 2012-04-25 06:18:14

+0

看到我的答案。你不能這樣做。 – ThiefMaster 2012-04-25 06:18:39

1

試試這個:

<script type="text/javascript"> 
     $(function() { 
     function confirmmsg() { 
      return "Mail Not sent"; 
     } 
     window.onbeforeunload = confirmmsg; 

     }); 
</script> 
+0

爲什麼你在dom就緒事件中包裝該代碼? – ThiefMaster 2012-04-25 06:19:08