Chrome truncates error messages and adds "<omitted>" in window.onerror
I found a solution that works well.
Chrome implements the new HTML standard, in which 2 new parameters have been added to the onerror handler, namely: the colNumber, and the error object (including stack trace).
See:
The full error message can be accessed through error.message
as per my code sample below. This is a duplicate of the 1st parameter message
, it seems like Chrome has decided to truncate message
. Not sure why they had to break something that was working... :-(
IE and FireFox (as of my current versions: 11.0.9600 & 26.0) are not yet implementing the new 5-parameter standard, so the code makes allowance for that.
Hope this helps someone!
Code sample to return full error message:
<html><head> <script type="text/javascript"> //Chrome passes the error object (5th param) which we must use since it now truncates the Msg (1st param). window.onerror = function (errorMsg, url, lineNumber, columnNumber, errorObject) { var errMsg; //check the errorObject as IE and FF don't pass it through (yet) if (errorObject && errorObject !== undefined) { errMsg = errorObject.message; } else { errMsg = errorMsg; } alert('Error: ' + errMsg); } var throwError = function () { throw new Error( 'Something went wrong. Something went wrong. Something went wrong. Something went wrong. ' + 'Something went wrong. Something went wrong. Something went wrong. Something went wrong. ' + 'Something went wrong. Something went wrong. Something went wrong. Something went wrong. ' + 'Text does not get truncated! :-)'); } </script></head><body> <h1>Hello World</h1> <input type="button" onclick="throwError()" value="Throw uncaught error!" /><br /><br /></body>
This is a known problem in Chrome and has already been noticed by other people: https://github.com/angular/angular.js/issues/5568.
I don't think there is a workaround, but the bug is already reported: http://crbug.com/331971