Openlayers 3在pointermove处理程序中使用调试器崩溃了chrome

时间:2015-06-09 16:18:29

标签: javascript breakpoints openlayers-3

当我在"中设置断点时map.on(' pointermove',handler)"处理程序,使用chrome内置的调试器,chrome崩溃。

崩溃,我的意思是没有生成未来的pointermove事件,并且指针样式不会对网页的任何元素做出反应(例如,光标'样式通过链接)。拖动导航停止工作。

这是我应该避免做的事吗?

1 个答案:

答案 0 :(得分:1)

既不是浏览器的错误也不是解释器(JS)的错误。这是预期的行为。

如果在事件处理程序中设置断点,则在断点处停止执行处理程序代码,即直到您使用调试器或继续执行该事件才会被执行。

修改

事件处理程序在事件循环线程中运行,该线程执行浏览器窗口的所有事件处理程序。如果处理程序停止,则暂停事件循环。但是,如果您将鼠标移到其上,则浏览器窗口会转换新事件,然后将它们存储到事件队列中。如果继续执行,将处理队列中的下一个事件。但断点仍然活跃。您可以再次恢复,但同时队列中存储的事件越来越多。而下一个是在断点处抓住的。

因此,删除断点并恢复执行是唯一可以让您摆脱此陷阱的事情。然后执行所有事件,并且还有机会处理其他事件。

我不知道队列的大小,但如果它已满并且传递了更多事件,浏览器可能会崩溃。这意味着标签/窗口或浏览器不会再做出反应。