《jQuery与JavaScript入门经典》——2.4 调试jQuery和JavaScript

2.4 调试jQuery和JavaScript

前面介绍了如何在JavaScript控制台中查找JavaScript和其他脚本的错误。如果脚本并未导致浏览器错误,只是运行方式不符合预期,该如何办呢?Firebug集成了一个优秀的调试器,可助一臂之力。

2.4.1 JavaScript调试器
JavaScript调试器让您能够查看随网页加载到浏览器中的JavaScript脚本。除查看脚本外,您还可以设置断点、监控变量值以及查看调用栈,就像使用其他调试器时一样。

图2.21显示了Firebug提供的JavaScript调试器的组成部分。在JavaScript调试器中,您可使用如下功能。

  • JavaScript视图:显示实际的JavaScript代码。

图2.21 Firebug的JavaScript调试器提供了代码、监控、栈和断点视图

  • JavaScript选择列表:这个列表包含随网页加载的JavaScript脚本清单,您可单击它来选择要查看的JavaScript文件。
  • 在下一语句处中断:该选项被启用时,浏览器将中断调试器,执行到下一行JavaScript代码行不再执行。
  • 监控:“监控”选项卡显示了当前执行的代码可用的函数、变量和属性等,如图2.21所示。这是一个极具价值的窗口,代码执行时通过它可知道变量和对象的值。另外,您还可以在监控列表中添加自己的表达式,为此只需在监控列表开头输入它们即可。“监控”选项卡的一项卓越功能是,您可双击变量的值并修改它们,这是一种测试假设的极佳方式。
  • 栈:“栈”选项卡提供了导致当前执行代码的函数调用过程,它极具价值的一个地方是,您可展开函数名来查看传递给每个函数的参数值。您还可以单击函数名,这将在JavaScript视图中显示相应的文件,并高亮显示相应的代码行。
  • 栈面包条:类似于“Stack”选项卡,也显示函数调用栈。您还可单击函数名,这将在JavaScript视图中显示相应的文件,并高亮显示相应的代码行。
  • 断点:断点让您能够指定执行到什么地方后停止。您设置断点后,浏览器将在执行到相应代码行后停止。要设置断点,可在JavaScript视图中单击代码行左边;断点用红点表示。要删除断点,可单击它。“断点”选项卡列出了您设置的所有断点;要在“断点”选项卡中禁用断点,可取消选择它旁边的复选框。
  • 当前执行的代码行:当前执行的代码行用黄色箭头表示。
  • 重新运行:单击该图标将重新启动当前执行的脚本,并使用以前的输入。
  • 断续:接着往下执行脚本,直到遇到断点。
  • 单步进入:单击这个图标将往下执行一行代码。如果这行代码调用了其他函数,将进入该函数的第一行。
  • 单步跳过:单击这个图标将往下执行一行代码。如果这行代码调用了其他函数,将执行整个函数并进入下一行。如果该函数包含断点,将在断点处停止执行。
  • 单步退出:单击该图标将执行当前函数余下的所有代码,并进入调用函数的下一行。

使用JavaScript调试器

下面的示例将帮助您熟悉JavaScript调试器。请看程序清单2.4所示的代码,这是一个基本网页,包含一个按钮和一个计数字符串。这个HTML文档包含两个< div>元素。第一个为< div id="clicker"onclick="countIt()">,定义了一个简单的按钮。当您单击这个按钮时,将调用JavaScript函数countIt( )。第二个是< div id="counter">,用于显示一个数字。

每当您单击按钮时,JavaScript函数countIt( )都将显示的数字加1。然而,这些JavaScript代码存在问题,导致数字增加到2后就不再增加了。

程序清单2.4 一个非常简单的HTML文档,其中的JavaScript代码有问题

请按如下步骤在JavaScript调试器中设置断点并调试问题。

  1. 在项目的文件夹hour02中,新建文件hour0204.html,添加程序清单2.4所示的代码,再保存文档。
  2. 启动Firefox并单击Firebug图标以启用Firebug。
  3. 在Firefox中输入下面的URL,注意到网页包含一个按钮和数字1。

  1. 单击Firebug中的标签“脚本”(Script),再从脚本选择列表中选择hour0204.html,您将在调试器的脚本区域看到程序清单2.4所示的代码。注意到第7~11行的函数设置div元素counter显示的值。
  2. 单击行号8的左边,在第8行设置一个断点。出现了一个红点,如图2.22所示。另外,确保在调试器中显示了“监控”选项卡。
  3. 单击网页中的按钮,调试器中将出现一个黄色箭头,而第8行呈高亮显示。脚本执行到这行后停止了。这个函数决定要在div元素中显示什么值。在“监控”选项卡中,注意到变量cnt还未定义。

  1. 单击“单步跳过”图标,变量cnt的值将变成1。
  2. 再次单击“单步跳过”图标,代码行cnt += 1;将变量cnt的值变成了2。
  3. 单击“单步退出”图标三次,跳出当前函数以及后续jQuery函数。注意到网页中显示的值变成了2。
  4. 单击“断续”按钮,让脚本执行完毕。到目前为止,一切顺利。
  5. 再次单击网页中的按钮。调试器将再次激活,并像第6步那样在第8行停止。注意到变量cnt的值再次变成了未定义。
  6. 单击“单步跳过”图标,变量cnt的值变成了1。再次单击“单步跳过”图标,变量cnt的值变成了2。单击页面中的按钮时,变量cnt重新变成了未定义,然后依次变为1和2。
  7. 为修复这种问题,在Aptana中调换第7和8行的位置,从而在函数incCount()外面定义变量cnt。这样,变量cnt将只被定义和设置一次(即脚本加载时),然后再定义函数incCount()。
  8. 保存这个文件,再在Firefox中刷新网页。这次脚本将在页面加载时停止执行。图2.23表明,JavaScript调试器在hour0204.html的第8行停止执行,这是因为第8行为函数定义而不是变量cnt的定义。
  9. 单击第8行的断点将其删除,再在第9行添加一个断点,如图2.23所示。
  10. 单击“断续”,按钮接着执行JavaScript并结束网页加载。
  11. 单击网页中的按钮,JavaScript将再次停止执行—这次是在第9行。这次您在“监控”选项卡中看不到变量cnt,除非展开元素Window(窗口),如图2.24所示。
  12. 为避免每次调试时都展开元素Window,单击监控列表开头的NewWatch Expression(新建监控表达式),如图2.24所示,再输入cnt并按回车键。在监控列表开头新增了监控表达式cnt,如图2.24所示。
  13. 单击“单步跳过”图标,变量cnt的值将变成2。再单击“断续”按钮接着往下执行。
  14. 再次单击网页中的按钮,这次变量cnt的值为2。单击“单步跳过”图标,变量cnt的值将变成3。

  1. 程序看起来没有问题,因此单击第9行的断点将其删除,再单击“断续”按钮接着往下执行。
  2. 现在每当您单击按钮时,显示的数字都将加1。至此,您成功地完成了JavaScript脚本调试。

这个示例非常简单,这是有意为之的,旨在让您能够轻松地按指定步骤做,从而熟悉调试器的工作原理。完成本书的练习时,您可能会多次用到这个调试器。请牢记基本的调试步骤:设置断点并在分步执行代码时查看变量的值。
2.4.2 如何调试jQuery呢
大家常问的一个问题是,如何调试jQuery。即便是有丰富JavaScript调试经验的人,也会提出这样的问题。答案很简单,jQuery和各种插件也是JavaScript代码,要调试jQuery,可从网上下载未压缩的jQuery库,并将其存储到项目中。这将在本书后面介绍。

为何要下载未压缩的版本呢?因为压缩后的版本可读性极差,所有代码都放在一行中,在调试器中显示的效果很糟。未压缩的版本格式很好,可读性极强。

注意:即便无法获得未压缩的jQuery库文件,可在Aptana中打开jQuery库文件,再选择菜单File>Format。Aptana将自动设置文件的格式,使其美观易读。大多数IDE都提供了这样的功能。

对于格式良好的jQuery库或其他JavaScript库,可像调试其他JavaScript文件一样调试它们。

时间: 2024-09-21 02:06:48

《jQuery与JavaScript入门经典》——2.4 调试jQuery和JavaScript的相关文章

《JavaScript入门经典(第6版)》——第1章 JavaScript简介 1.1 Web脚本编程基础

第1章 JavaScript简介 JavaScript入门经典(第6版) 本章主要内容包括: 服务器端和客户端编程 JavaScript如何改善Web页面 JavaScript的历史 文档对象模型(DOM)基础知识 window和document对象 如何使用JavaScript给Web页面添加内容 如何利用对话框提示用户 与只有文本内容的祖先相比,现代的Web几乎是完全不同的,它包含了声音.视频.动画.交互导航等很多元素,而JavaScript对于实现这些功能扮演了非常重要的角色. 在第1章中

《JavaScript入门经典(第6版)》——第2章 创建简单的脚本2.1 在Web页面里添加JavaScript

第2章 创建简单的脚本 JavaScript入门经典(第6版)本章主要内容包括: 在Web页面里添加JavaScript的各种方式JavaScript语句的基本语法声明和使用变量使用算术操作符代码的注释捕获鼠标事件第1章介绍了JavaScript是一种能够让Web页面更具有交互性的脚本语言. 本章将介绍如何向Web页面添加JavaScript,以及编写JavaScript程序的一些基本语法,比如语句.变量.操作符和注释.同时,本章将涉及更加实用的脚本范例. 2.1 在Web页面里添加JavaSc

《jQuery与JavaScript入门经典》——第 2 章 调试jQuery和JavaScript网页 2.1JavaScript控制台

第 2 章 调试jQuery和JavaScript网页 本章介绍如下内容: 到哪里寻找jQuery和JavaScript脚本输出的信息: 如何调试HTML元素存在的问题: 如何轻松地找出并修复CSS布局问题: 如何在Web浏览器中实时地查看和编辑DOM: 如何快速找出并修复JavaScript问题: 有哪些信息可供用来分析浏览器和Web服务器之间的网络流量. 编写JavaScript和jQuery应用程序时,面临的一项重大挑战是找出并修复脚本中的问题.简单的语法错误和无效值可能令您万般沮丧,浪费

《jQuery Mobile入门经典》—— 2.3 使用JavaScript完成功能

2.3 使用JavaScript完成功能 jQuery Mobile入门经典 我们现在知道如何在网站中使内容具备样式--如果可以在访问者来查看网站的时候让某些事情发生,那可能会挺好.这就是JavaScript发挥作用的地方. 起初,在JavaScript开始引入的时候,获得了一个不好的名声.人们不理解它是什么,或者它有什么用处.我记得我的一个朋友确信他中了病毒,因为每次他访问某一网站的时候,单词会跟随他的鼠标在屏幕上围绕. 对许多人来说,JavaScript成为令人讨厌的东西,充其量不过是一个制

《jQuery与JavaScript入门经典》——导读

**前言**当前,互联网用户多达几十亿.传统网站由包含大量链接的网页组成,这种网站正逐渐被包含高度交互元素的单页应用取代,并呈现出加速的趋势.其中的主要原因在于,用户不再像以前那样耐心地单击.等待并在网页之间切换,而希望网站犹如在其计算机和移动设备上运行的应用程序. 实际上,在您阅读本书期间,互联网上将新增数百万个网页.这些网页大多是使用HTML 编写的,它们使用 CSS 设置元素的样式,并使用 JavaScript 实现用户和后端服务之间的交互. 阅读本书后,您将对如何在网页中结合使用Java

《jQuery Mobile快速入门》—— 2.1 jQuery Mobile页面模板

2.1 jQuery Mobile页面模板 jQuery Mobile快速入门一个jQuery Mobile页面模板如程序清单2-1所示.在往下讲解之前,我们先来运行一下这个模板.复制HTML模板(ch2/template.html),然后粘贴到你的台式机中,并通过你最喜欢的浏览器中打开它.现在,你运行的就是一个jQuery Mobile app,而且无论使用的是什么浏览器,它看起来应该与图2-1所示相同.该模板符合HTML5语法标准,并且包含了jQuery Mobile的特定属性和asset文

《jQuery与JavaScript入门经典》——2.3 调试CSS

2.3 调试CSS 要调试动态网页,还需知道如何调试CSS问题,因为要实现网页的动态性,很多时候都需使用JavaScript修改CSS布局. 如果JavaScript或jQuery脚本修改了DOM元素的CSS布局,查看Web浏览器中的代码不会有任何帮助,而需要查看浏览器应用于元素的CSS.为此,需要结合使用CSS检查器以及HTML检查器中的布局检查器和样式检查器. 2.3.1 使用CSS检查器 CSS检查器让您能够访问网页加载的所有CSS脚本,如图2.13所示.CSS检查器顶部有两个下拉列表,左

《jQuery与JavaScript入门经典》——2.2 调试HTML元素

2.2 调试HTML元素 调试HTML元素有时候很困难.浏览器渲染HTML文档时,简单的语法错误都可能导致严重的问题.另外,HTML元素的有些属性不影响网页的外观,但会影响网页的行为. HTML检查器(Inspector)和DOM编辑器可帮助您找出并修复HTML代码中的问题.下面通过一些简单的示例演示如何使用这些工具. 2.2.1 查看HTML元素 HTML检查器让您能够查看浏览器分析的每个HTML元素,这让您能够从浏览器的角度审视HTML,让语法错误更为明显. 图2.5显示了Firebug的H

《jQuery与JavaScript入门经典》——1.2 为编写jQuery和JavaScript做准备

1.2 为编写jQuery和JavaScript做准备 简要地介绍动态Web编程后,该切入正题,为编写jQuery和JavaScript准备好开发环境了. 编写jQuery和JavaScript项目时,开发环境至关重要.开发环境应具有如下特点. 易于使用的IDE:IDE提供了文本编辑器,让您能够以最简单的方式修改代码.请选择您用起来很顺手且支持HTML.CSS.JavaScript和jQuery的IDE. 用于开发的Web服务器:绝不要直接在用于生产的Web服务器上进行开发(虽然大多数人都会偶尔