如何在javascript中退出调用堆栈
警报发生两次,一次在“dragover_handler”函数内,然后在dragover的addEventListener函数内 如何在第一次调用后退出调用堆栈?我试过返回,它不起作用 下面是包含此警报的代码部分如何在javascript中退出调用堆栈,javascript,callstack,Javascript,Callstack,警报发生两次,一次在“dragover_handler”函数内,然后在dragover的addEventListener函数内 如何在第一次调用后退出调用堆栈?我试过返回,它不起作用 下面是包含此警报的代码部分 function dragover_handler(e) { e = e || event; e.preventDefault(); if(e.pageY < 24){ e.preventDefault(); e.stopPropagation()
function dragover_handler(e) {
e = e || event;
e.preventDefault();
if(e.pageY < 24){
e.preventDefault();
e.stopPropagation();
e.dataTransfer.dropEffect= "none";
alert('You will be leaving this window');
document.body.removeEventListener('dragover', function(e){
this
});
} else {
e.dataTransfer.dropEffect = "move";
}
}
document.body.addEventListener('dragover', function(e){
dragover_handler(e);// return ;
}, false);
函数dragover\u处理器(e){
e=e | |事件;
e、 预防默认值();
如果(e.pageY<24){
e、 预防默认值();
e、 停止传播();
e、 dataTransfer.dropEffect=“无”;
警报(“您将离开此窗口”);
document.body.removeEventListener('dragover',函数(e){
这
});
}否则{
e、 dataTransfer.dropEffect=“移动”;
}
}
document.body.addEventListener('dragover',函数(e){
dragover_handler(e);//返回;
},假);
代码在这个链接中。首先“右键单击”-然后单击“添加”-然后在输入标记内输入一些文本并单击“确定”。将形成一个div,向上拖动该div,尝试将其拉出窗口外,当您到达边缘时,警报必须出现-警报必须只发生一次- 您可以使用“dragenter”事件而不是“dragover”。当它进入目标时只会开火一次
- 或者,您可以在处理程序中使用removeEventListener
const eventHandler = event => { document.body.removeEventListener("dragover", eventHandler) alert() } document.body.addEventListener("dragover", eventHandler)