有了解过事件模型吗,DOM0级和DOM2级有什么区别,DOM的分级是什么
由W3C制定,在W3C开始制定之前,民间就有一套被广泛应用的规范,也就是人们常说的0级DOM。0级DOM定义了一些基本的事件与一个事件模型,这个事件模型规定了两个为元素绑定事件监听的方法:
1. 在标签中写一个与事件同名的属性:
<input type="button" onclick="fun()">
2. 用JS赋值的方法:
var btn = document.getElementById('.btn'); btn.onclick = fun;
这种绑定监听的方式,无法为一个事件添加多个监听,后续添加的监听回调,会覆盖前面的回调。
3. 清除监听
btn.onclick = null;
同时,用监听函数的返回值表示是否要清除浏览器的默认行为。为false时表示需要清除。
这个时候,还没有事件流的概念,因此并不存在捕获阶段、冒泡阶段一说。
仅仅定义了HTML与XML底层结构
增加许多事件,同时定义了DOM2级事件模型,在该事件模型中,定义了新的添加、移除事件监听的方法,同时还增加了事件流,这个时候,就有了捕获阶段与冒泡阶段。
在2级DOM事件模型中,这样为元素添加、移除事件监听:
var btn = document.getElementById('.btn'); btn.addEventListener(‘click’, showMessage1, false); // 为btn绑定监听事件,并添加一个回调函数 btn.addEventListener(‘click’, showMessage2, false); // 为btn的点击事件再添加一个监听回调 btn.removeEventListener(‘click’, showMessage2, false); // 清除btn上的第二个监听回调
这种添加、移除监听的方式,就可以为一个事件同时绑定多个监听回调,触发顺序取决于定义的顺序,我们还可以根据回调函数名来移除指定的监听回调函数。
增加了一些事件,提升交互能力。
0级DOM、2级DOM定义了不同的事件模型,事件模型主要是对绑定监听回调做定义,其次还有事件流问题。
还有一点,就是后一个DOM分级的出现,并不会废弃前一个DOM分级,而是一个不断扩展的过程,就比如2级DOM出现了,但0级DOM为事件绑定、移除监听的方式依旧可以正常使用。
【JS “DOM 分级” 与 “DOM 事件模型”】https://blog.csdn.net/qq_44647809/article/details/120688232