自从我接受了把Web前端也分成三层架构来开发以来,
确实HTML代码更加简洁了,修改和维护也更加容易了。
但是我现在遇到一个问题:
就是如果JS文件全部放在外部文件中,
在测试网页特效的时候,比如说单击某一个按钮之后,
文档内容发生改变,
但是由于JS文件没有写在HTML文件里面,
所以我根本不知道是哪个方法或者函数被触发了。
而且也不知道HTML元素在什么时候添加上该事件的。
FireBug虽然有时候能跟进去函数里,但是有时候写出匿名函数的话,
有时候就跟不进去了。
我想问问各位是怎样处理这种情况的?还有就是有没有这样的一种工具?
可以实时的看到任何一个HTML元素所注册的事件监听程序。
无论它是在文档加载时就注册的,还是动态注册的。
无论它是写在HTMl代码里的,还是写在外部JS文件中的。
就像在FireBug里查看当前HTML元素的CSS属性一样。
可以实时的看到。

解决方案 »

  1.   

    暂时没有遇到这么强大的调试器
    不过一般一个DOM元素调用了什么方法,作为开发者应该在调试中能看出来有时候别人的代码确实很难很快了解到是怎么回事,不过既然是有事件响应,那就应该能够知道大概做了些什么
    匿名函数你可以设置断点进去的还有一个关键词是debugger
      

  2.   

    我的建议是测试的和正常使用的代码运行方法分开,像我写的如意工具箱,所以代码都弄到一个文件里面了,但我平常开发的时候,程序调用js的时候,本来应该用eval调用的,但测试状态下,会把这段代码写到一个临时文件里,再调用,这样报错的时候,ie提示就比较清楚了,是哪个文件,第几行出错,而不会直接提示第一行出错的情况下。
      

  3.   

    楼主的三层架构指的哪个?能不能简单一下。至于你所说的问题:Firebug显然是能调试所有动态情况的,因为它是根据DOM的如果DOM有该事件方法,则有,没有就是没有删除DOM时,删除所有。Firebug下:
    console.log(myvar);还有,看看不能能写相关的获取DOM所有事件的处理函数如果是自已添加事件:可以先检查一下,没有就添加。
    或直接添加,覆盖前面的。
      

  4.   

    另外,如果是团队开发,严禁在外部js中执行代码,仅定义代码(同时提高加载速度)
    初始化的代码要放在页面中或onload中,这样不会混xiao.