【问题标题】:JS Breakpoint doesn't get hit, but code executesJS断点没有被命中,但代码执行
【发布时间】:2012-11-02 18:06:29
【问题描述】:

我有一个不寻常的问题,并且从几个小时开始就一直在解决它。我的断点没有在函数中被击中,但功能仍然有效,这让我发疯。我已经用 Chrome/开发者工具和 Firefox/Firebug 试过了。我以前从未有过这样的事情。

当我点击按钮 New Conversation 时,第一个断点命中。 但是,当我单击通过 jquery .load() 出现的取消按钮时,断点没有命中。然而它背后的功能会执行(div 被清空)。

请问我错过了什么?

function cancel_new_conversation(event){
    //2nd Breakppoint below this line doesn't get hit, but the empty() statement works.
    event.preventDefault();
    $('#new_conversation_div').empty();
}

function new_conversation(event){
    event.preventDefault();
    var url = $(this).attr("href") + "/";
    $('#new_conversation_div').load(url, function(){
       //1st Breakpoint gets hit.               
       $('#new_conversation_cancel_button').click(cancel_new_conversation);     
    }); 
}

$(document).ready(function (){      
  $('#new_conversation_button').click(new_conversation);
}

我在做什么会以某种方式破坏 javascript?

编辑:

警报的好主意。这是证据。也许是环境问题?我必须在另一台机器上试一试。

【问题讨论】:

  • 你是否在函数中有警告,只是为了检查它是否是调试器/代码执行的问题?
  • 我的怀疑是您有多个此代码的副本,并且断点位于未运行的副本上。我会尝试将debugger; 语句添加到您认为正在运行的代码中,清除缓存并再次运行它——这样您就可以查看您正在查看的源是否已更新(您会看到debugger; 语句) ,如果不是,debugger; 语句会停止它 正在 运行的代码。如果您正在编辑正在查看的代码,这对您没有帮助,但遗憾的是......
  • 你是不是在jQuery的empty()中设置了断点,只是为了从callstack中看第二个empty是否是你的函数触发的?
  • 删除第一个(好的)断点时,第二个(坏的)断点会被击中吗?
  • @T.J.Crowder 我已经仔细检查过了,即使在我的电脑上也是同样的问题。它看起来不像代码的副本,因为无论我在 Aptana STudio 中进行什么更改,我都会在重新加载时看到它反映在 Bowser 中。 jakub,如果我停用第一个断点,也不会发生任何事情。第二个永不中断。

标签: javascript jquery firebug


【解决方案1】:

昨天午餐后,在我无限的智慧中,我有我的部分 html,我打算加载 $('#new_conversation_div').load(url, function() 设计为带有标题和正文的完整 html。

因此,一旦它被加载到我的 div 中,html 标记就变得一团糟(两个标题,两个正文)

我将 javascript 文件从损坏的部分 html 移动到我的主 html 中,并从部分 html 中删除了标题和正文。现在我 .load() 部分 html,一切都按预期工作并且断点命中。很难找到。

希望这对其他人有所帮助。

【讨论】:

    【解决方案2】:

    我在您的代码中看到的唯一问题是您在加载新对话时没有取消绑定 #new_conversation_cancel_button 上的点击事件。 如果你使用 jquery >1.7,你应该测试以下代码:

    function cancel_new_conversation(event){
        //2nd Breakppoint below this line doesn't get hit, but the empty() statement works.
        event.preventDefault();
        console.log("cancel_new_conversation");
        $('#new_conversation_div').empty();
    }
    
    function new_conversation(event){
        event.preventDefault();
        var url = $(this).attr("href") + "/";
        $('#new_conversation_div').load(url, function(){
           //1st Breakpoint gets hit.               
           $('#new_conversation_cancel_button').off('click').on('click',cancel_new_conversation);     
        }); 
    }
    $(document).ready(function (){      
      $('#new_conversation_button').on('click',new_conversation);
    });
    
    ​
    

    【讨论】:

      猜你喜欢
      • 2013-02-18
      • 2017-05-12
      • 1970-01-01
      • 2016-07-30
      • 2013-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-09
      相关资源
      最近更新 更多