8

我在第44行debugger;中添加了以下代码的断点。我预计Chrome会在执行console.log("...")之前每次都停在那里。但令我惊讶的是,它只停留一次。Chrome调试器不会停止

要测试的例子:

  1. 下方运行在Chrome
  2. 打开Chrome开发者工具的片段
  3. 拖动从拖放区域

另一网站上的图像。在这点上铬停在断点处。但是如果你看看控制台,你应该看到console.log语句被执行了两次。

我想知道为什么会发生这种情况。 (线程问题??)

如果我想在这一行调试代码,我该如何解决这个问题。

$(document).ready(function() { 
 

 
    $('#drop-area').on("dragover", function(event) { 
 
    event.preventDefault(); 
 
    event.stopPropagation(); 
 
    $(this).addClass('dragging'); 
 
    }); 
 

 
    $('#drop-area').on("dragleave", function(event) { 
 
    event.preventDefault(); 
 
    event.stopPropagation(); 
 
    $(this).removeClass('dragging'); 
 
    }); 
 

 
    $('#drop-area').on("drop", function(event) { 
 
    event.preventDefault(); 
 
    event.stopPropagation(); 
 

 
    var count = 1; 
 
    var dropObj = event.originalEvent.dataTransfer; 
 
    for (var i = 0; i < dropObj.items.length; i++) { 
 
     var aDropItm = dropObj.items[i]; 
 
     if (aDropItm.kind == "file") { 
 
     //ignore 
 
     } else { 
 
     aDropItm.getAsString(function(_str) { 
 
      debugger; //The debugger should stop here every time before the string is printed to the console 
 
      console.log("This was called [" + count++ + "] times"); 
 
     }); 
 
     } 
 
    } 
 
    }); 
 

 
});
#drop-area { 
 
    background-color: red; 
 
    width: 400px; 
 
    height: 400px; 
 
}
<div id="drop-area">Drop files here...</div> 
 

 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>

编辑
我报这个如下错误: https://bugs.chromium.org/p/chromium/issues/detail?id=748923

+1

对[Chromium buglist](https://bugs.chromium.org/p/chromium/issues/list)的快速搜索出现的唯一bug与源地图有关([ex](https:// bugs .chromium.org/p/chromium/issues/detail?id = 459499)),这些不在这里玩。如果没有人指出我们错过的东西,那么可能值得在那里报告。如果它是优化的结果,我不会感到惊讶,但看到使用“调试器”语句优化代码是令人惊讶的。 –

+1

我不确定这是我的错误还是错误。如果我没有找到解决方案,我会将它发布到buglist中。 – Lars

+0

在这里添加一个链接到铬错误,让其他人可以找到它:) 它甚至可以被认为是“答案” – styfle

回答

1

的问题不会再发生。这似乎是一个铬的错误。