2017-07-25 101 views
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

的問題不會再發生。這似乎是一個鉻的錯誤。