【发布时间】:2018-02-14 07:43:14
【问题描述】:
您好,我正在使用fabricjs,它对我很有效。
然而,我最近确实遇到了一个我无法解释的 JavaScript 问题,而且我只在 fabricjs 上检测到(在所有浏览器中)。
注意:我使用的是1.7.11 或fabricjs。
它发生在mouse:out 事件上。
唯一的副作用是使浏览器控制台膨胀:
未捕获的类型错误:无法读取 null 的属性“火” 在 klass._fireOverOutEvents (fabric.js:9717) ...
是这样的:
这是香草fabric.js(即不是我的代码)。
如你所见,target 是undefined,所以if 块没有被执行。到目前为止,这是意料之中的。现在是奇怪的部分。
this._hoveredTarget 是 null(请参阅下面的调试器视图)。
else if 块不应该被执行,但它是。
Debugging view of falsy "else if" being executed
我尝试使用 this._hoveredTarget !== null 和 this._hoveredTarget != null 等变体修复它,但当 this._hoveredTarget 为 null 时它仍然存在。
我以前从未见过这个。有什么想法吗?
【问题讨论】:
-
你能证明
this._hoveredTarget为空吗? -
在 else if 之前检查,
this._hoveredTarget = target,在 else if 执行之后检查 -
我在出现问题时添加了代码的调试器视图。
-
你必须在 canvas.on('mouse:out') 中有一些代码正在杀死 canvas._hoveredTarget。
标签: javascript fabricjs mouseout