如何从JavaScript中的调用堆栈退出

时间:2018-06-28 11:36:21

标签: javascript callstack

警报发生两次,一次在“ dragover_handler”函数内部,然后在addEventListener函数内部进行拖动。

Call Stack in linebreak 第一次调用后如何从调用堆栈中退出?我已经尝试过退货,但是行不通。

Codepen Code

下面是具有此警报的代码部分

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尝试将其拉到窗外,当到达边缘时,警报必须出现-它必须发生一次

1 个答案:

答案 0 :(得分:0)

  • 您可以使用“ dragenter”事件代替“ dragover”事件。进入目标时只会触发一次。

  • ,否则,您可以在处理程序中使用removeEventListener。

    const eventHandler = event => {
        document.body.removeEventListener("dragover", eventHandler)
        alert()
    }
    
    document.body.addEventListener("dragover", eventHandler)