Note: I wrote this page whan I was very annoyed with Opera for releasing Opera 4, the worst browser ever (except for Explorer 3). Meanwhile Opera has redeemed itself by Opera 5, so this page is only maintained for historical reasons.

Bugs in Opera 4 and 5


Opera 4 was a buggy browser. I published this bug list to see exactly what was wrong with it. Meanwhile Opera has released Opera 5 and it's much better in many respects. The only open issues are the minor security bug and document.getElementsByTagName.
See the data below for details.

All testing has been done on Windows in Opera 4.02 and Opera 5.

New errors

First of all some items that worked fine in Opera 3 but don't work in Opera 4:

  1. Opera 4 doesn't support TITLE's on links any more. In my mind, TITLEs are very important for making a site accessible. They can be used for giving extra information about a link. Besides, all modern browsers (except for Netscape 4) support them, so Opera can't stay behind, certainly not if it worked fine in Opera 3.
    Solved in Opera 5.
  2. Also, support of the opener necessary for cross-window JavaScripting is scanty. In one series of tests it worked, in another it didn't and Opera even crashed.
    Solved in Opera 5.
  3. Opera 4 has a brand new minor security bug: you can read out the location of frames and windows that don't come from your server. For more information on why this is a security bug, see the Frame Busting page.
  4. Opera 4 has made an (I think) wrong decision with the names of form elements. The form printing script doesn't work at the moment because Opera 4 no longer recognizes
    <INPUT NAME="thename">
    Instead it required an ID, both in the HTML and in the JavaScript. Although this is in fact a correct implementation of the standards, Opera fails to provide backward compatibility with NAMEs in forms. Thus it makes sure that common form validation scripts won't work in Opera 4. This won't help to give them a larger share of the market.
    Solved in Opera 5.
  5. There is an as yet unexplained bug in my cross-frame mouseover script. I moved the pre-loading script from the navigation page to the index page: Opera couldn't execute the script any more and gave error messages. Not sure what's causing it; for the details see the source of the frameset.
    The script works fine in all other browsers.
    Solved in Opera 5.

Event Handling

Opera says:

"the event variable passed to event handlers does not match the javascript standard"

What does this mean? Why don't they give information on how the event variable works instead of telling us how it doesn't work?
Incomplete information.

DOM Errors

Opera claims that it supports a limited number of new DOM methods and properties on elements with absolute position. These claims are incorrect more often than not in Opera 4. Opera 5 fulfills most of the claims.

I set up a test page with as basic HTML:

<P ID="test">A paragraph with an ID.</P>

and as basic CSS:

#test {position: absolute;
	top: 100px;
	left: 100px;
	background: #00cc00;

This is what happened:

ClaimExample scriptOpera 4Opera 5
Opera does not claim to support top and left, but in fact the browser supports these properties and their changing.
var x = document.getElementById('test').style; = 150;
Setting and getting of visibility
var x = document.getElementById('test').style;
x.visibility = 'hidden';
Setting and getting of pixelLeft and pixelTop
var x = document.getElementById('test').style;
x.pixelLeft = 100;
No Yes
Setting and getting of pixelWidth and pixelHeight
var x = document.getElementById('test').style;
x.pixelHeight = 10;
Buggy. The background conforms to the new width/height, but the actual content stays where it is.
Setting and getting of zIndex
var x = document.getElementById('test').style;
x.zIndex = 20;
No Yes
Setting and getting of color and background.
var x = document.getElementById('test').style;
x.background = "#ffffff";
x.color = "#ffffff";
No Yes
var x = document.getElementById('test');
var x = document.getElementsByTagName('p');
var x = document.getElementsByName('test')[0].style;
x.color = "#ffffff";
No Yes
Note: I don't know this method, but it is supported in Explorer 5 and not in Netscape 6.
var x = document.getElementById('test');
if (x.contains) alert('Yep');
else alert('Nope');
No Yes
var x = document.getElementById('test');
y = x.parentNode; = 'hidden';
I put an extra DIV with absolute position around the paragraph.
Dunno exactly. The assignment of x.parentNode to y works, but the visibility change gives an error. Yes


z-index: Opera can't place two layers exactly on top of each other.