views:

14

answers:

0

We have had some reports of problems with our checkout whereby customers get js exceptions (we assume) so they cannot checkout.

No matter how many testbenches we use, we have failed to recreate the issues but that's the point of the exercise.

I have setup a simple error trapping function which works based around:

window.onerror = function(message, url, line, chr) {
    new Request({
        url: "/errorTrap.php",
        data: {
            m: message,
            u: url,
            l: line,
            c: chr
        },
        method: "get",
        onComplete: function() {
            // perhaps save the rendered html source via a second POST request?    
            alert("done");
        }
    }).send();
    return true;
};

Sure enough, in a single week I have now received 8 emails of trapped exceptions.

Regretfully, the checkout page is very dynamic. It contains SOME inline javascript, a lot of it is external .js files and classes and some is evaluated js through ajax responses. The length of the page differs dependent on items in the shopping basket, shipping options, address book info and so forth.

This is why seeing an exception 'Object expected' on line 253 means very little as it does not help me understand which function has triggered the exception or supply the context of the script block / source code that goes with it.

I have been thinking of doing a second XHR request that can drop the innerHTML of document.body to a ajax handler and thus supply a relative line numbering and content that may have caused the problem.

Is this the only improvement in tracing I can do? Are there any solutions for this "out there"?

Here is the jsfiddle that demos the exception handling http://www.jsfiddle.net/dimitar/8hqrY/