IE deliberate bug
In at least one version of IE, there is a very nasty bug in the JavaScript interpreter which can only have been put there deliberately.
It refers to the string.split() method, when you split against a regular expression (the way Perl and PHP do). IE behaviour deviates counterintuitively from Mozilla and Webkit behaviour by silently dropping empty elements from the returned array.
If you have an AJAX backend which returns something like
20 High Street|Smalltown|Countyshire|CY5 6ZA
then you try to split it with something like
aa = at.split(/\|/);
then you quite rightly expect
aa[0] == "20 High Street"
aa[1] == "Smalltown"
aa[2] == "Countyshire"
aa[3] == "CY5 6ZA"
On the other hand, should your AJAX backend return something like
129 Acacia Avenue|Bigcity||BC2 0PC
then when you call the same
aa = at.split(/\|/);
what you find with Mozilla or Webkit is, as you would expect:
aa[0] == "129 Acacia Avenue"
aa[1] == "Bigcity"
aa[2] == ""
aa[3] == "BC2 0PC"
But IE, on the other hand, gives
aa[0] == "129 Acacia Avenue"
aa[1] == "Bigcity"
aa[2] == "BC2 0PC"
Call me paranoid if you like, but I cannot see any way for that behaviour to be accidental. For that matter, I cannot see any way for that behaviour even to be useful if implemented on purpose, other than to break code already tested against the popular Open Source browsers.