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

Openlayers 3 using debugger inside pointermove handler crashes chrome

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

所谓崩溃,是指未来不会生成指针移动事件,并且指针样式不会对网页的任何元素做出反应(例如 'cursor' 链接样式)。拖动导航停止工作。

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

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

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

编辑

事件处理程序在执行浏览器window所有事件处理程序的事件循环线程中运行。如果处理程序停止,则事件循环暂停。但是浏览器 window 如果你将鼠标移到它上面,浏览器就会投射新事件,然后将它们存储到事件队列中。如果您恢复执行,将处理队列中的下一个事件。但是断点仍然有效。您可以再次恢复,但同时队列中存储的事件越来越多。而下一个是在断点处被抓到的。

所以移除断点并继续执行是唯一可以让你摆脱这个陷阱的方法。然后执行所有事件,并且也有机会处理更多事件。

我不知道队列的大小,但如果队列已满并且传递了更多事件,浏览器可能会崩溃。这意味着 tab/window 或浏览器本身将不再有反应。