如何在chrome上调试javascript


how to debug javascript on chrome

我遇到了一个奇怪的问题,jquery.load有时会在chrome上失败。我不会用细节来打扰你们,我只是在寻找一个指针,告诉你们我如何调试这样的问题?

我想也许firebug会有所帮助,但这个问题只发生在chrome上(甚至适用于IE)。

我做了一些类似的事情:

$("#contentid").html("Plz wait.");
$("#contentid").load(url);
$("#contentid").show();

我在#contentid上只得到了"Plz wait",我可以看到url被调用,并手动检查它,看到它成功了。

更新2:

所以我根据的建议更改了负载调用

$('#conentid').load(url, function(response, status, xhr){
  alert('Load was performed. url:' + url);
  if (status == "error") 
  {
    alert("text: " + xhr.statusText);
    alert("readyState: "+xhr.readyState+"'nstatus: " + xhr.status);
        alert("responseText: "+xhr.responseText);
  }
  else
  {
      $("#conentid").show(); 
  }
});

当出现错误时,我会得到状态=="错误"。

xhr.statusText:0

xhr.readyState:4

xhr.statusText和xhr.responseText为空

知道为什么吗?这是什么意思?

url可以手动工作。这个错误只发生在chrome上,有时也会发生

Chrome实际上拥有相当不错的开发工具。单击扳手图标,从菜单中选择开发工具。

关于这个特定的问题,我敢打赌,在加载完成之前会调用show——加载是异步发生的。在#contentid上为"on load"设置一个事件处理程序,并在其中进行显示。

更新

事实上,有更好的方法;将您的show放入load函数的回调中:

$('#conentid').load('ajax/test.html', function() {
  alert('Load was performed.');
  $('#contentid').show();
});

另一次更新

好的,就绪状态4表示XmlHTTPRequest正常完成。现在,这里有一个歧义:xhr.statusText是0还是空?在另一个浏览器上,您从该代码(包括错误代码)中看到了什么结果?

如果它在firefox上工作,并且只在Chrome上工作,那么你可能会有一个真正的Chrome错误。

也许其他人可以对这个答案做出解释,但问题是:

我有基本href TAG<base href="http://domain.com/" />

有一些关于使用jquery+base href的问题的参考资料。我不知道为什么,但删除这行修复了一切。感谢您的帮助,在此过程中我学到了一些web调试''ajax技巧。