|By Steve Bryant||
|October 4, 2002 12:00 AM EDT||
What's worse is that the person responsible for maintaining the site doesn't even know that the error occurred.
One of the most common ways to trap errors in troublesome ColdFusion code is to wrap a <cftry>/<cfcatch> block around it. If you're not using this method, you really should look into it. Part 4 of Charlie Arehart's series (June 2002) dealt with this topic.
Enter the "onerror" Property
Bringing ColdFusion into the Picture
Certainly you've gotten information from the browser to ColdFusion before, but for this technique to work smoothly, we must do it in such a way that we don't distract from the user's experience. Notice that no other window is opened, and that our current page is not forced to refresh (which would likely cause the error to recur and put the user in an infinite loop). Any of that could interfere with the user's experience. So how do we do it?
This would cause a problem if you actually tried to display the image, but we have no need to do that. We're just sending information to a ColdFusion page. The image is simply our way to do it without forcing the user to leave the page. This is the only way I know of that this can be done in HTML, that is consistent across browsers, and that doesn't distract from the user's experience.
Once we know this, everything else is just an extension of what we've learned so far. The technique could have other uses as well. For example, you could pull a ColdFusion page that's using <CFCONTENT> to make the page output its contents as a .gif or .jpg instead of HTML. This would allow server-side processing to be used to choose an image without the user having to experience a page reload. While I haven't seen any practical uses for this yet, I'm hoping this suggestion will whet enough appetites that I might hear ideas from others.
Now all you have to do is pass on the variables that were passed to your error handler script to your ColdFusion page as follows:
errImage = new Image();
errImage.src = 'JSErrs.cfm?url=' + escape(errUrl)
+ '&msg=' + escape(msg) + '&line=' + line;
|10/17/02 03:31:00 PM EDT|
- HTML5 Web Sockets: A Quantum Leap in Scalability for the Web
- Book Excerpt: Introducing HTML5
- Using Ext JS, Servlets, JSON, MySQL and Tomcat on Fedora
- Cloud Expo 2011 New York: Application Development in the Cloud