2017-09-05 12 views
0

안녕하세요. fabricjs을 사용하고 있으며 잘 작동합니다. 그러나 나는 최근에 내가 설명 할 수없는 JavaScript 문제를 발견했으며, (모든 브라우저에서) fabricjs에서만 발견했습니다.fabrics에서 실행 된 Falsy 코드 _fireOverOutEvents

참고 : 1.7.11fabricjs입니다.

이벤트는 mouse:out 이벤트에서 발생합니다.

Uncaught TypeError: Cannot read property 'fire' of null at klass._fireOverOutEvents (fabric.js:9717) ...

그것은 이렇게 가고 : 그것은 단지 부작용의와 브라우저 콘솔을 부풀게하는 것입니다

screenshot, falsy yet executed

이 바닐라 fabric.js (즉 나의 코드)입니다.

보시다시피, targetundefined이므로 if 블록이 실행되지 않습니다. 지금까지는 예상대로입니다. 이제 이상한 부분이 있습니다.

this._hoveredTargetnull입니다 (아래 디버거보기 참조). else if 블록을 실행하지 않아야합니다.

Debugging view of falsy "else if" being executed

나는 this._hoveredTarget !== nullthis._hoveredTarget != null 같은 변종과 그것을 해결하기 위해 노력했지만 this._hoveredTargetnull 때 여전히 간다.

전 본 적이 없어요. 어떤 생각?

+0

'this._hoveredTarget'이 null이라는 증거를 제출해 주실 수 있습니까? – clabe45

+0

다른 것을 먼저 확인한 경우, 'this._hoveredTarget = target' 그 후에 실행하면 – Durga

+0

문제가 발생했을 때 코드의 디버거보기를 추가했습니다. – RKMNGRT

답변

0

이 코드는 버그로 인해 발생하지 않습니다. IF는 IF입니다. 오류가 발생하는 해당 회선 앞에 mouse:out에서 발생하는 이벤트 처리가 있고이 이벤트 처리기가 this._hoverTarget에 대한 참조를 삭제하고 있습니다.

사용자 정의 코드가 허용되면 변수를 객체로 액세스하기 전에 조건을 다시 검사해야하기 때문에 이것은 여전히 ​​내 생각에는 버그입니다. fabricJS 1.7.17의

현재 버전은 장소에 다른 코드가 있습니다

enter image description here

this.hoveredTarget는 당신이 안전 hoveredTarget하는 일에 즉시 어떤 것을 참조로 저장됩니다.

어쩌면 업그레이드해야합니다.