I've been battling with Javascript errors from IE today - which is difficult on the Mac.
After finding this article on Ajaxian I implemented it with Seam + Richfaces. All it does is log client side Javascript errors to your server log. It's not as useful as I thought it would be (still no help with IE's cryptic error messages) but I thought someone might like it.
This code goes into your page (preferably in your global template where you can take it out before go live. Or not):
<head> <!-- other head stuff --> <script> onerror= function handleErr(msg,url,l) { logJavaScriptError(msg, url, l); } </script> </head> <body> <h:form> <a:jsFunction action="#{javascriptLogger.error}" name="logJavaScriptError"> <a:actionparam name="msg" assignTo="#{javascriptLogger.message}"/> <a:actionparam name="url" assignTo="#{javascriptLogger.url}"/> <a:actionparam name="l" assignTo="#{javascriptLogger.lineNumber}"/> </a:jsFunction> </h:form>
And a component to log it:
@Name("javascriptLogger") @BypassInterceptors public class JavascriptLogger { private String message; private String url; private String lineNumber; public void setMessage(String message) { this.message = message; } public void setUrl(String url) { this.url = url; } public void setLineNumber(String lineNumber) { this.lineNumber = lineNumber; } public void error() { Log log = Logging.getLog(JavascriptLogger.class); log.error("Javascript error: #0 from URL #1 at Line #2", message, url, lineNumber); } }
Cheers,
Damian.