我在第44行debugger;中的以下代码中添加了一个断点。我希望chrome每次在执行console.log("...")之前都停在那里。但是令我惊讶的是,它只停止了一次。

要测试示例:

  • 在Chrome中运行以下代码段
  • 打开Chrome开发工具
  • 从拖放区
  • 中的另一个网站拖动图像

    此时,Chrome会在断点处停止。但是,如果您在控制台中查看,应该会看到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

    最佳答案

    该问题不再发生。看来这是Chrome中的错误。

    关于javascript - Chrome调试器不会停止,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45305184/

    10-12 12:31
    查看更多