2016-09-25 149 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的事件处理程序。 –