2016-09-25 148 views
0

我有一個事件偵聽器暫停事件偵聽器在後臺

document.onkeyup = function (event) { 
}; 

但我打開一個模式窗口(只是一個簡單的divposition: absolute; width: 100%; height: 100%; left: 0; top: 0)。

問題是,當我在這種模式下輸入窗體時,關鍵事件偵聽器仍然在後臺偵聽,所以當模式窗口再次隱藏時,頁面發生了很多變化,因爲關鍵事件監聽器。

如何在模態窗口打開時在後臺暫停事件偵聽器?我希望模態窗口的行爲像prompt()這使得頁面上的所有內容都等待它完成。

document._onkeyupHolder = document.onkeyup; 
document.onkeyup = null; 

,當你與模態窗口中完成,附上回:

+1

您不能暫停事件偵聽器。你可以做的是在打開模式時設置一個標誌變量,並在偵聽器中檢查標誌是否設置。然後在關閉模式時重置標誌。您也可以在打開模式時分離事件,並在關閉時重新附加。第三種選擇是設置模式的鍵控監聽器,並防止事件的傳播。 – Teemu

+0

偉大的建議!謝謝 – Jamgreen

回答

0

,可以暫時分離事件處理程序

document.onkeyup = document._onkeyupHolder; 
document._onkeyupHolder = null; 

當然,要完全模擬一個提示,你也必須爲其他事件做同樣的事情。

+0

這是什麼,例如,bootstrap做他們的模式? – Jamgreen

+0

@Jamgreen糾正我,如果我錯了,但我不認爲引導模式將阻止主要的HTML的事件處理程序。 –