debug JS code which triggers an alert()

后端 未结 3 735
心在旅途
心在旅途 2021-02-07 23:18

I have a system which is built using the ext-js library. Part of the system lists orders that are flowing through an online store. When a row is clicked, additional order detail

相关标签:
3条回答
  • 2021-02-07 23:53

    Firebug has a command line API to programmatically create breakpoints. For example:

    debug(fn);
    

    creates a breakpoint to the function fn. Unfortunately this can't be used for functions with native code (built-in functions like alert). However, you can use this trick.

    Insert a script block in your code with this script-

    window.alert_ = window.alert;
    window.alert = function() {
        alert_.apply(window,arguments)
    };
    

    What you've done is to redefine window.alert with your own which does the same thing.

    Now attach the breakpoint in firebug with:

    debug(alert);
    

    Now the next time a script calls alert, you will get a breakpoint in your function. You can then analyze the stack trace and find out where it is getting called from.

    0 讨论(0)
  • 2021-02-07 23:57

    If you are able to recreate it, you can just put a break point at the line where the alert appears and view the stack trace and figure out the path.

    If you can not recreate it, you need to find where the alert is coming from. After that look what calls that method and see what values need to be set. Walk your way up the path until you find the click event.

    There is no real answer on debugging JavaScript since every application is coded differently. A lot of time it is manual labor of walking through code and figuring out what path it takes. Adding watches, console.logs, and alerts will be your friend in figuring out variable states. Add break points and walk through the code.

    0 讨论(0)
  • 2021-02-08 00:01

    Here's more cross-browser version of @chetan's answer

            window.alert_ = window.alert;
            window.alert = function () {
                debugger;
                alert_.apply(window, arguments);
            };
    
    0 讨论(0)
提交回复
热议问题