要严格地控制事件就必须代理 HTMLElement,但考虑到这个代理工作量巨大,设计上只代理根元素,即 document.documentElement。容器内部的 Element 直接交由业务代码使用。这样做有这几个假设: * 在根元素与 DOM disconnect 后,根元素的所有子元素的事件都会停止触发。 * 业务代码不会恶意地从子 HTMLElement 获取祖先元素以产生全局影响。