location.hrefproperty. This worked perfectly until I hit upon a URL with a # in it. The # was correctly URL encoded to %23, and most browsers returned the correct string in location.href.
Safari 4.x was the only exception. It returned the URL after decoding. This wouldn't be a problem on its own, except that only the URL portion was decoded.
location.search(everything after the ?) and
location.hash(everything after the #) were untouched.
This meant that a URL like this:
http://tech.bluesmoon.info/foobar%231.html#123Would show up in location.href as this:
http://tech.bluesmoon.info/foobar#1.html#123This was a problem, because I now had two # signs in the URL, and would have to twist through hoops to correctly encode the URL. The bug is actually in Webkit, and affects Android too. Thanks to Ryan Grove for pointing me to it.
Then I discovered the
document.URLproperty. This is exactly the same as
location.href, except that it isn't affected by the bug in Safari 4.x.
I've tested in other browsers, and it seems to work as expected, so that's what I'm using for now.
Oh, and if you don't know what boomerang is yet, wait until June 24.