Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.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中退出调用堆栈_Javascript_Callstack - Fatal编程技术网

如何在javascript中退出调用堆栈

如何在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()

警报发生两次,一次在“dragover_handler”函数内,然后在dragover的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);
函数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)
    

您能将代码张贴在这里以供进一步检查吗?发布代码图像并没有真正的帮助。请将代码作为文本发布。可能您添加了两次事件侦听器,或者忘记了删除EventListener?也在那里使用codedragenter的链接进行编辑,但dragover还需要document.body.removeEventListener('dragover',function(e){this});-已删除处理程序中的eventlisterner,但仍不工作删除事件然后添加警报是吗?