8
次のコードにのコードにブレークポイントを追加しました。私はconsole.log("...")
が実行される前に毎回クロムがそこに止まると思った。しかし、私の驚きには、それは1回だけ止まります。例をテストするにはChromeデバッガが停止しません
:
- 実行この時点で、クローム で以下のスニペット
- Chromeを開き、開発ツール
- ドラッグドロップエリア内の別のWebサイトから画像
クロムはブレークポイントで停止します。しかし、コンソールを見ると、console.log
ステートメントが2回以上実行されたことがわかります。
なぜこのようなことが起こっているのですか。 (スレッディングの問題??)
この行でコードをデバッグしたい場合、どうすればこの問題を解決できますか?
$(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>
EDIT
私はここにこれをバグとして報告:問題はもう起こらない https://bugs.chromium.org/p/chromium/issues/detail?id=748923
[Chromium buglist](https://bugs.chromium.org/p/chromium/issues/list)のクイック検索がソースマップ([ex](https:// bugs) .chromium.org/p/chromium/issues/detail?id = 459499))、これはここでプレーしていません。誰も明白な何かを指摘していない場合は、おそらくそこに報告する価値があります。最適化の結果であれば驚くことはありませんが、その中に 'debugger;'ステートメントで最適化されたコードを見るのは驚くべきことです。 –
私はそれがバグか私の間違いであるかわかりませんでした。私が解決策に来ないと、私はバグリストに投稿します。 – Lars
クロムバグへのリンクをここに追加して、他の人が見つけられるようにしてください:) "回答" – styfle