For some general discussion of available browsers, see browsers.html .
All of these tests pass on: Mozilla 1.4a, IE6, Opera 7.5. It is only the KHTML browser family that is still shipping product with such bugs.
Oh, and guess what? I can crash the entire Safari 1.2 browser (click to make it happen):
crash_safari()
An "X" means it has the bug.
Bug | Click to Test | IE5.0PC | IE5Mac | Saf 1.x | Konq 3.1.1 | Op 7.10 | ICE 5.4.1 |
---|---|---|---|---|---|---|---|
no "instanceof" operator |
if ({} instanceof Object) {} alert('ok')
|
X | |||||
no boolean "in" operator |
if ('a' in window) {} alert('ok')
|
X | X | ||||
problem parsing implied semi-colon |
try{throw new Error('boo')} catch(e) {} alert('ok')
|
X | X | ||||
problem parsing named functions |
function noop(f) {}; noop(function foobar() {}); alert('ok')
|
X | X | ||||
missing Node.addEventListener and Node.attachEvent |
if (document.body.addEventListener || document.body.attachEvent) alert('ok')
|
X | |||||
can't load a script via createElement('script') (all but Opera can do a document.write creation before onload) |
var el = document.createElement('script'); el.src = 'bb_script.js'; document.body.appendChild(el);
|
X | X | X | X (v7.5 ok) | X | |
missing encodeURIComponent and decodeURIComponent |
encodeURIComponent('a'); decodeURIComponent('a'); alert('ok')
|
X | X | X (v1.2 ok) | X | ||
missing Number.toFixed (and toPrecision, toExponential) |
(.51).toFixed(0); alert('ok')
|
X | X | X | X | ||
no String.replace(RegExp, Function) |
if (("aaa").replace(/(\w)/g, function() {return 'b'}) == 'bbb') alert('ok');
|
X | X | X | X | ||
setTimeout of a function |
setTimeout(function() {alert('ok')},0)
|
X (v1.2 ok) | X | ||||
buggy Array.concat |
if (1 == [].concat([['a']][0]).length) alert('ok')
|
ok (bug in Konqueror 3.0.4) | |||||
return out of some nested switch statements |
/* view source to see test_switch() */
if (test_switch()) alert('ok')
|
ok (bug in Konqueror 3.0.x) |
Browser | script itself | expando = Function | expando = String | setAttribute String | addEventListener | attachEvent |
---|---|---|---|---|---|---|
Mozilla 1.7b | Y | Y | Y | Y | ||
IE5.0 Win | Y | |||||
Opera 7.5 | Y | |||||
Safari 1.2 | (doesn't work at all) |
For iframe-based data channel with an onload event independent of the particular url and its content, a browser needs to have support for at least one of:
To see the source of the test (what each of the letter codes for passes mean) do view source. To run the test:
Family | Brand Version | Passes | Comment |
---|---|---|---|
IE | 6.0 | BAC82945-XY69 | Notice 9 twice. with slight changes to test, can get BAC82465+XY9 |
IE | 5.0 | BC5-X69 | |
Mozilla | Mozilla 1.4a | CBA28143XY5-3697 | perfect except for 5+ vs. 5- |
Opera | 7.10 | BC8245-X69 | only B8 if no previous alert or setTimeout. security error if write to winempty. |
Opera | 7.5 | CB284XY65+9A1717 | note duplicate 1 and 7. |
KHTML | Safari 1.0 | C245-6B89 | parent is bad in 5- for v73 but ok in 1.0. Both ok in test 8. crashes if write to winstatic. |
KHTML | Safari 1.2 | C245-6XY8197 | |
KHTML | Konqueror 3.1.0 | CB28 | only finds window.frames by index. |
ICE | 5.4 | BC824X69 | only B8 if no previous alert or setTimeout |