Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript EventTarget.addEventListener()和#x27;捕获参数的用法是什么?_Javascript_Javascript Events - Fatal编程技术网

Javascript EventTarget.addEventListener()和#x27;捕获参数的用法是什么?

Javascript EventTarget.addEventListener()和#x27;捕获参数的用法是什么?,javascript,javascript-events,Javascript,Javascript Events,我正在学习普通JavaScript,在理解EventTarget.addEventListener()函数中的useCapture参数的用途时遇到了一些问题 使用捕获可选 如果为true,则useCapture表示用户希望启动捕获。启动捕获后,指定类型的所有事件 将在分派之前分派到已注册的侦听器 指向DOM树中它下面的任何EventTarget。发生的事件 在树中向上冒泡不会触发侦听器 指定使用捕获。请参阅DOM级别3事件和JavaScript事件 要求详细解释。如果未指定,请使用捕获 默认为

我正在学习普通JavaScript,在理解
EventTarget.addEventListener()
函数中的
useCapture
参数的用途时遇到了一些问题

使用捕获可选

如果为true,则useCapture表示用户希望启动捕获。启动捕获后,指定类型的所有事件 将在分派之前分派到已注册的侦听器 指向DOM树中它下面的任何EventTarget。发生的事件 在树中向上冒泡不会触发侦听器 指定使用捕获。请参阅DOM级别3事件和JavaScript事件 要求详细解释。如果未指定,请使用捕获 默认为false

读到《医生》,我从第一句话就搞糊涂了。及 为了理解它,我设置了一个带有三个嵌套元素的小测试页面,在最上面的两个div上有一个click侦听器

守则:

var treeTopEl=document.getElementById('container');
var treeMiddleEl=document.getElementById('wrapper');
var output=document.getElementById('output');
var treeTopElListener=函数(事件){
var elId=event.target.id;
output.innerHTML+=“\n顶部元素上的Listener已触发,\n\t事件目标id为:”+elId;
};
var TreemidleEllistener=函数(事件){
var elId=event.target.id;
output.innerHTML+=“\n中间元素上的Listener已触发,\n\t事件目标id为:“+elId;
};
treeTopEl.addEventListener('click',treetopellListener,false);
addEventListener('click',treemiddleListener,true)
#容器#包装器{
填充:20px;
边框:1px纯绿色;
}

钮扣
我认为这张图表几乎说明了这一切:

基本上:
useCapture
参数用于在捕获阶段接收通知,而不是冒泡阶段。捕获阶段处理程序将在任何冒泡阶段处理程序之前调用。请注意,Internet Explorer不支持IE9之前的捕获阶段

这样,一个更好的例子是在同一个元素上的两个处理程序,在中间(但是让我们做三个完整的级别):

hook(“容器”和“-”);
挂钩(“包装物”、“-”;
钩子(“testBtn”,“-”);
函数挂钩(id,前缀){
var元素=document.getElementById(id);
元素。addEventListener(“单击”,函数(e){
显示(id+“”的捕获处理程序称为“,”前缀);
},对);
元素。addEventListener(“单击”,函数(e){
显示(id+“”的冒泡称为“,”前缀);
},假);
}
功能显示(消息,前缀){
var p=document.createElement('p');
p、 innerHTML=(前缀| |“”)+msg;
文件.正文.附件(p);
}
#容器#包装器{
填充:10px;
边框:1px纯绿色;
}
p{
字体系列:无衬线;
填充:0;
保证金:0;
}

钮扣
我认为这张图表几乎说明了这一切:

基本上:
useCapture
参数用于在捕获阶段接收通知,而不是冒泡阶段。捕获阶段处理程序将在任何冒泡阶段处理程序之前调用。请注意,Internet Explorer不支持IE9之前的捕获阶段

这样,一个更好的例子是在同一个元素上的两个处理程序,在中间(但是让我们做三个完整的级别):

hook(“容器”和“-”);
挂钩(“包装物”、“-”;
钩子(“testBtn”,“-”);
函数挂钩(id,前缀){
var元素=document.getElementById(id);
元素。addEventListener(“单击”,函数(e){
显示(id+“”的捕获处理程序称为“,”前缀);
},对);
元素。addEventListener(“单击”,函数(e){
显示(id+“”的冒泡称为“,”前缀);
},假);
}
功能显示(消息,前缀){
var p=document.createElement('p');
p、 innerHTML=(前缀| |“”)+msg;
文件.正文.附件(p);
}
#容器#包装器{
填充:10px;
边框:1px纯绿色;
}
p{
字体系列:无衬线;
填充:0;
保证金:0;
}

钮扣
我认为这张图表几乎说明了这一切:

基本上:
useCapture
参数用于在捕获阶段接收通知,而不是冒泡阶段。捕获阶段处理程序将在任何冒泡阶段处理程序之前调用。请注意,Internet Explorer不支持IE9之前的捕获阶段

这样,一个更好的例子是在同一个元素上的两个处理程序,在中间(但是让我们做三个完整的级别):

hook(“容器”和“-”);
挂钩(“包装物”、“-”;
钩子(“testBtn”,“-”);
函数挂钩(id,前缀){
var元素=document.getElementById(id);
元素。addEventListener(“单击”,函数(e){
显示(id+“”的捕获处理程序称为“,”前缀);
},对);
元素。addEventListener(“单击”,函数(e){
显示(id+“”的冒泡称为“,”前缀);
},假);
}
功能显示(消息,前缀){
var p=document.createElement('p');
p、 innerHTML=(前缀| |“”)+msg;
文件.正文.附件(p);
}
#容器#包装器{
填充:10px;
边框:1px纯绿色;
}
p{
字体系列:无衬线;
填充:0;
保证金:0;
}

钮扣
我认为这张图表几乎说明了这一切:

基本上:
useCapture
参数用于在捕获阶段接收通知,而不是冒泡阶段。捕获阶段处理程序将在任何冒泡阶段处理程序之前调用。请注意,Internet Explorer不支持IE9之前的捕获阶段

这样一个更好的例子是在同一个元素上的两个处理程序,在中间(但是让我们做所有三个级别)