This is the first post of a new series, looking at some of the odder bugs encountered while developing for the expanding Web, no matter how basic a bug it may be.
Thanks to twitter user @paperfairy, a bug was discovered on my Command Line Twitter Client, TwCLI.
For some reason, when submitting a command in Chrome for Linux, the page would simply refresh, and the command would never be sent. At first, I had no possible way to track down this bug. I didn’t have a linux box (with a GUI, anyway) so I simply told him that it was unfortunate, but it’d have to stay a bug. Until a recent post on lifehacker brought my attention to Portable Ubuntu. I immediately installed it, opened up the Chrome website in Firiefox, installed Chrome Beta, and headed over to TwCLI to see what was amiss.
Of course, it was a single line in a detection script to send Geo-Data to Twitter (as long as the user approved it, of course):
This single line was throwing an exception I hadn’t encountered in other browsers – Google wasn’t defined. Oddly, I thought it would handle that properly, since google wasn’t defined, it would just skip over it, but instead it threw an error and halted all further javascript code.
The fix was simpler than tracking down the bug, I simply had to add this to the start of the javascript code:
try{ if(!google) { google = 0; } } catch(err) { google = 0; }
And voila, I had both a check for google, and a catch if it decided to throw errors while checking for it.
Whether this is a Chrome bug or not, I don’t know – I simply don’t know enough about JavaScript in order to say so either way. But, are undefined variables supposed to throw errors, or are they simply supposed to return false?