49

I want to display script errors in a popup alert instead of showing them in the browser console.

window.onerror = function() {
  var message = /* get error messages and put them here */;
  alert(message);
  return true;
};
6
  • 4
    Note that the onerror event is only supported by IE and Mozilla. Commented Apr 9, 2010 at 4:01
  • 1
    So is there a cross-browser solution? I mean, a similar function supported by webkit Commented Apr 9, 2010 at 4:05
  • 2
    You mean there are browsers other than IE and Mozilla??? Dang! I need to get out more :) Commented Apr 9, 2010 at 4:10
  • 2
    Actually it'll be supported (hopefully soon) in WebKit - see phwinfo.com/forum/comp-lang-javascript/… Commented Apr 9, 2010 at 4:12
  • yep! But I got another problem. Seems that onerror only support those 3 parameters. There is no way to catch an error of a specific name. Commented Apr 9, 2010 at 4:30

3 Answers 3

67

Yes, that is the correct way.

See the reference here:

http://www.javascriptkit.com/javatutors/error2.shtml

And explanation of how to see more details of the error here:

http://www.javascriptkit.com/javatutors/error3.shtml

Their example:

window.onerror = function(msg, url, linenumber) {
    alert('Error message: '+msg+'\nURL: '+url+'\nLine Number: '+linenumber);
    return true;
}

If you wish to display a LIST of errors in a single pop-up, it's trickier.

Since the errors occue 1 by 1, you need to do the following:

  • have window.onerror handler store error details in some array
  • Check that array periodically - either via a timer, or on every N'th call of window.onerror handler, or both.

    When the check happens, process entire array, display contents as desired, and empty out an array

Sign up to request clarification or add additional context in comments.

1 Comment

Thx! So the answer is: window.onerror = function(message) { alert(message); return true; }; Just tested!
4

Just in case someone would like to use it with jQuery:

$(window).on("error", function(evt) {

    console.log("jQuery error event:", evt);
    var e = evt.originalEvent; // get the javascript event
    console.log("original event:", e);
    if (e.message) { 
        alert("Error:\n\t" + e.message + "\nLine:\n\t" + e.lineno + "\nFile:\n\t" + e.filename);
    } else {
        alert("Error:\n\t" + e.type + "\nElement:\n\t" + (e.srcElement || e.target));
    }
});

Comments

0

Check this out: http://www.javascriptkit.com/javatutors/error3.shtml. Looks like signature is function(message, url, linenumber).

1 Comment

Link in answer is outdated - "domain has expired".

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.