我在第44行的代码中添加了断点
测试示例:
我想知道为什么会发生这种情况。(线程问题?)
如果我想在此处调试代码,该如何解决呢?
debugger;
。我期望Chrome每次在执行console.log("...")
之前都会在这里停止,但令我惊讶的是它只停止了一次。测试示例:
- 在Chrome中运行下面的片段
- 打开Chrome Dev工具
- 将来自其他网站的图像拖到投放区域
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
debugger;
语句的代码被优化令人惊讶。 - T.J. Crowder