javascript addeventlistener란 Firefox 및 Safari의 MouseEvent.path와 동일합니다.



addeventlistener란 (1)

사용할 수 없지만이 속성을 실제로 갖고 싶은 경우 다음과 같이 Event 객체의 기본 프로토 타입을 확장 할 수 있습니다.

if (!("path" in Event.prototype))
Object.defineProperty(Event.prototype, "path", {
  get: function() {
    var path = [];
    var currentElem = this.target;
    while (currentElem) {
      path.push(currentElem);
      currentElem = currentElem.parentElement;
    }
    if (path.indexOf(window) === -1 && path.indexOf(document) === -1)
      path.push(document);
    if (path.indexOf(window) === -1)
      path.push(window);
    return path;
  }
});

그러나 내가 너라면, 나는 프로토 타입을 연장하지 않을 것이다 - 나는 위에서 언급 한 것과 같은 함수를 만들 것이다.

또한 이러한 유형의 이벤트 만 처리하려는 경우 Event.prototype을 MouseEvent.prototype으로 변경합니다.

Polymer 1.0을 사용 중이며 Chrome에서 버튼을 클릭하면 MouseEvent 가 생성됩니다. 이 MouseEvent 객체에는 클릭 한 버튼에 대한 부모 요소의 정렬 된 배열 인 path 속성이 있습니다. 그러나 Firefox 및 Safari에서는 path 속성이없는 click 이 생성됩니다. 동일한 정보를 제공하는 click 객체의 동일한 속성이 있습니까?





polymer-1.0