Tech Note: Bookmarklet Bug Fix
Oops! A bug crept into the new LGF Pages bookmarklet code last night, affecting Firefox and Chrome users; the window would pop open but get stuck at the “Loading” screen.
The problem is now fixed, and it was something very simple — when testing a variable with “typeof,” the keyword “undefined” needs to be in quotes for these browsers.
Anyway, please re-install the “Create A Page” bookmarklet one more time so you’re up to date; everything is now working in all modern browsers. The latest version is 1.1.8.
How a bug happens:
I had originally written that section of the bookmarklet code as:
if (window.jQuery === undefined)
And that works in all browsers, without the quotes, because you’re comparing against the value undefined. However, this is problematic because it’s possible to declare undefined as a variable and give it a completely different value. Since a bookmarklet needs to be as unobtrusive as possible, I decided to change the code to use the typeof operator, like this:
if (typeof (window.jQuery) === undefined)
But I forgot that typeof returns a string, so you need to compare against ‘undefined’, in quotes, like this:
if (typeof (window.jQuery) === "undefined")
Except in Safari, which will happily do the correct comparison either way, with or without the quotes. I added that new code at the last minute and because it worked in Safari I made the mistake of releasing it into the wild. Safari tricked me by being too forgiving.
And that’s how bugs happen.