From 648ce5981bf22ba9b36d905183fb0825812354d0 Mon Sep 17 00:00:00 2001 From: Tobias Bosch Date: Thu, 3 Nov 2016 10:23:09 -0700 Subject: [PATCH] =?UTF-8?q?perf(core):=20don=E2=80=99t=20use=20`DomAdapter?= =?UTF-8?q?`=20nor=20zone=20for=20regular=20events?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/dom/events/dom_events.ts | 27 ++++++++++++------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/modules/@angular/platform-browser/src/dom/events/dom_events.ts b/modules/@angular/platform-browser/src/dom/events/dom_events.ts index 43fef1a37d..1200410458 100644 --- a/modules/@angular/platform-browser/src/dom/events/dom_events.ts +++ b/modules/@angular/platform-browser/src/dom/events/dom_events.ts @@ -8,7 +8,6 @@ import {Injectable} from '@angular/core'; -import {getDOM} from '../dom_adapter'; import {EventManagerPlugin} from './event_manager'; @Injectable() @@ -18,17 +17,25 @@ export class DomEventsPlugin extends EventManagerPlugin { supports(eventName: string): boolean { return true; } addEventListener(element: HTMLElement, eventName: string, handler: Function): Function { - var zone = this.manager.getZone(); - var outsideHandler = (event: any /** TODO #9100 */) => zone.runGuarded(() => handler(event)); - return this.manager.getZone().runOutsideAngular( - () => getDOM().onAndCancel(element, eventName, outsideHandler)); + element.addEventListener(eventName, handler as any, false); + return () => element.removeEventListener(eventName, handler as any, false); } addGlobalEventListener(target: string, eventName: string, handler: Function): Function { - var element = getDOM().getGlobalEventTarget(target); - var zone = this.manager.getZone(); - var outsideHandler = (event: any /** TODO #9100 */) => zone.runGuarded(() => handler(event)); - return this.manager.getZone().runOutsideAngular( - () => getDOM().onAndCancel(element, eventName, outsideHandler)); + let element: any; + switch (target) { + case 'window': + element = window; + break; + case 'document': + element = document; + break; + case 'body': + element = document.body; + break; + default: + throw new Error(`Unsupported event target ${target} for event ${eventName}`); + } + return this.addEventListener(element, eventName, handler); } }