zoukankan      html  css  js  c++  java
  • JavaScript脚本调试方法

     JavaScript脚本调试方法

    开发ASP.NET控件是ASP.NET编程中底层的技术,控件必须具备丰富的客户端交互功能。可以直接在控件中加入JavaScript标准,也可以把一些比较好的第三方客户端组件集(如 Prototype.js和JQuery等)嵌入到控件中,不管使用哪种方式,都要学会JavaScript调试技术。下面就讲解一下JavaScript的各种调试技术。

    首先设置IE,依次选择"Tools"→"Internet Options"→"Advanced",找到Browsing下的两个禁用脚本调试复选框,取消对其的选择(IE默认将这两项选中,故不能进行脚本调试),如图2-8所示。



    图2-8 "Internet Options"(浏览器选项)窗口

    经过以上设置,取消IE默认的禁用功能,就可以调试脚本了。

    2.4.1 调试页面中的JavaScript脚本(方法一)

    从页面DebugControl.aspx中找到预置示例脚本时加入的ClientClickEvent客户端方法。按F9键在alert语句中设置一个断点,会发现在VS 2005中根本不能在页面中设置断点(VS 2008则直接可以设置断点,就没有VS 2005这样麻烦,不过此方法也可以用于VS 2008)。没关系,我们可以在alert语句之前加一句"debugger;"。修改后ClientClickEvent方法代码如下:

    1. /// <summary>
    2. /// 获得本书更多内容,请看:
    3. /// http://blog.csdn.net/ChengKing/archive/2008/08/18/2792440.aspx
    4. /// </summary> 
    5. <script language="javascript">
    6.         function ClientClickEvent()
    7.         {          
    8.             debugger;  
    9.             alert('我被点击了一下!');
    10.         }
    11. </script>

    在浏览器运行DebugControl.aspx页面,并单击页面中的按钮,则程序在运行到"debugger;"语句后会弹出"选择调试器窗口",如图2-9所示.
    可以从上面窗口任意选择一个调试器(以上只有VS调试器,如果安装了其他调试器,则也会在这里列出),选择按钮"是(Y)",程序即可在断点中断。



    图2-9 选择调试器窗口

    2.4.2 调试页面中的JavaScript脚本(方法二)

    上一节所遇到的VS 2005(VS 2008之前版本)中不能在 *.aspx页面中为客户端脚本设置断点问题,是使用"debugger;"语句进行跟踪调试来解决的。

    在页面运行之前是不能够设置断点的,但可以在运行后手动启动调试器,这样就可以设置断点了。

    按"Ctrl+F5"组合键(与F5键的区别是不启用跟踪调试环境)运行页面。在浏览器中呈现DebugControl.aspx测试页面后,依次选择浏览器的菜单"查看"→"脚本调试程序"→"打开"命令,如图2-10所示。

    图2-10 执行菜单命令

    选择命令后即可弹出"选择调试器窗口"窗口(图2-9),供选择调试器,选择"新实例Visual Studio 2005"项并单击"是(Y)"按钮,会弹出一个新的IDE环境。

    在弹出的新IDE环境中找到alert语句,并在此语句设置一个断点。然后切换到正打开DebugControl.aspx页面的浏览器,单击"调试客户端脚本"按钮,即可进行调试。

    2.4.3 调试非嵌入式JavaScript脚本文件

    非嵌入式脚本一般是指当前运行站点某个文件夹下面的JavaScript文件。

    首先配置脚本文件环境。新建一个脚本文件Jscript.js,把页面DebugControl.aspx中的ClientClickEvent方法复制到新建文件,并将这个文件引用到页面中,如下所示:

    1. <script src=JScript.js type="text/jscript"></script>

    调试JavaScript脚本文件中的脚本比较简单,除了按照2.4.1节提到的用"debugger;"语句的方法,更简单的方法是在要跟踪调试的语句上按F9键设置一个断点,再按F5键运行,程序运行到断点后会自动中断。

    2.4.4 调试嵌入式JavaScript脚本资源文件

    嵌入式资源文件是指编译到服务端控件源代码DLL中的资源,比如图片、样式文件、客户端脚本文件等,这样的好处是整个控件最终只有一个DLL,易于部署,后面会有章节专门讲解嵌入式资源,这里仅说明其调试方法。

    在VS 2008之前的版本,比如VS 2005默认是不可以调试嵌入式资源文件的,不过可以安装能够调试嵌入式资源文件的调试器,这里推荐一个笔者经常使用的调试器 -- -- Office 2003安装程序带的调试器(安装时从附带的扩展工具里找到它),安装好之后即可以通过上面的方法进行调试。比如在嵌入式脚本文件中使用debugger命令设置断点后,程序运行到该语句时会弹出调试器选择窗口,注意要选择Microsoft Script Editor,如图2-11所示。



    图2-11 Office 2003中的脚本调试器

    对于VS 2008,则不用这么麻烦,调试嵌入式资源文件的方式与调试非嵌入式资源文件完全相同,其余的事情由VS 2008内部处理。

    2.4.5 高效率调试的技巧

    1.debugger使用技巧

    当控件库比较大时,可以在一些关键的代码地方设置一些debugger命令,并设置执行条件,从而避免每次手动输入这些命令串,以及寻找关键的数据点,再设置断点,这些操作都相当费时。另外,如果这些脚本已经作为嵌入资源打包到DLL中,则无法设置断点。下面这种方案可以解决这些问题,直接看一下例子:

    1. /// <summary>
    2. /// 获得本书更多内容,请看:
    3. /// http://blog.csdn.net/ChengKing/archive/2008/08/18/2792440.aspx
    4. /// </summary> 
    5. var StartDebugger = false;
    6. function Method1()
    7. {
    8.     //... ...
    9.     if(StartDebugger)
    10.     {
    11.         debugger;
    12.     }
    13.     //... ...
    14. }
    15.  
    16. function Method2()
    17. {
    18.     //... ...
    19.     if(StartDebugger)
    20.     {
    21.         debugger;
    22.     }
    23.     //... ...
    24.      if(StartDebugger)
    25.     {
    26.         debugger;
    27.     }
    28.     //... ...
    29. }
    30. function Method3()
    31. {
    32.     //... ...
    33.      if(StartDebugger)
    34.     {
    35.         debugger;
    36.     }
    37.     //... ...
    38. }

    假设这是一些控件中的脚本函数,有"//... ..."标记的是省略的代码。在方法外面定义了一个StartDebugger变量,并且设置其为false,这里的StartDebugger变量就是一个普通的JavaScript变量。

    经过以上设置,默认情况下由于StartDebugger值为false(初始化值),所以这些Method方法中的"debugger;"语句始终不会执行,这样就可以把组件打包发给使用控件的开发人员了。

    假如使用控件的开发人员遇到问题,需要我们协助,这时只需要在他出问题的页面中加入如下代码即可调试:

    1. <form id="form1" runat="server">
    2.     <script language=javascript>
    3.  
    4.         StartDebugger=true;
    5.  
    6.     </script>
    7. </form>

    注意要保证"StartDebugger = true"在较晚的事件中执行,否则会报StartDebugger未定义错误。

    使用这种方法就不用每次寻找关键断点位置设断点,为自己也为开发人员节省了时间。此方案是笔者的同事们比较喜欢使用的一种方案。

    2.在IE地址栏中执行输出脚本

    这里主要使用地址栏执行脚本的功能。请看图2-12。StartDebugger是在页面上定义的一个变量,先通过浏览器运行页面后,再直接在地址栏中输入图2-12中的命令,即可得到StartDebugger的值,图2-13是它的执行结果。

    图2-12 在浏览器地址栏中运行脚本

     

    图2-13 浏览器地址栏中脚本执行结果

    这种方法的好处是不用启动调试。如果继续想看页面中所有的东西,可以在浏览器中执行一个错误语句,比如把上面语句改为:

    javascript:alert(abc);

    由于abc在页面上没有定义,则系统会自动弹出调试器窗口,您可在此窗口选择调试器并开始调试。

    引用:http://msdn.microsoft.com/zh-cn/dd567278.aspx

  • 相关阅读:
    java基础>I/O 小强斋
    动态查找>红黑树(RedBlack Tree) 小强斋
    java基础>I/O 小强斋
    动态查找>红黑树(RedBlack Tree) 小强斋
    1-N的自然数中,少了一个,找出这个数 小强斋
    oracle数据库导入导出 小强斋
    找出N个整数中最大的K个数 小强斋
    找出N个整数中最大的K个数 小强斋
    oracle数据库导入导出 小强斋
    2013长沙全国邀请赛总结
  • 原文地址:https://www.cnblogs.com/xiaogelove/p/2344003.html
Copyright © 2011-2022 走看看