警报发生两次,一次在“ dragover_handler”函数内部,然后在addEventListener函数内部进行拖动。
第一次调用后如何从调用堆栈中退出?我已经尝试过退货,但是行不通。
下面是具有此警报的代码部分
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);
代码在此链接中。首先“右键单击”,然后单击“添加”,然后在输入标签内输入一些文本,然后单击“确定”。将形成一个div,向上拖动该div尝试将其拉到窗外,当到达边缘时,警报必须出现-它必须发生一次
答案 0 :(得分:0)
您可以使用“ dragenter”事件代替“ dragover”事件。进入目标时只会触发一次。
,否则,您可以在处理程序中使用removeEventListener。
const eventHandler = event => {
document.body.removeEventListener("dragover", eventHandler)
alert()
}
document.body.addEventListener("dragover", eventHandler)