When following the specification breaks pages

In an ideal world, Opera would "just work" with any page out there.

What would that take? Well, you would be forgiven to think that if Opera supported fully the HTML/CSS/DOM standards plus JavaScript and some widely used IE-specific extensions, any page WOULD just work.

Welcome to the reality and the World Wild Web.

I was recently asked why a certain product's website didn't appear properly: several icons were missing. These icons were essential for using the page. Not a good situation for someone who prefers using Opera but needs that page to work.

I was sent a code snippet which showed that the site was formatted with a huge number of nested tables. The missing icon was in a table inside a table cell inside God knows how many other nested tables. The innermost table was coded to have a width of 1% which becomes a fairly small value considering that it is inside a cell with a width set to 3%. I'm not sure how wide your screen is but at least on my screen 1% of 3% of the width leaves no space for a button graphic, which is the likely reason why Opera did not show it. (Doing the maths: the first cell should on my 1024px wide screen have a width of 3% or 30px if Opera displays it in full screen with not hotlist, the inner table should thus have a width of 1% of 30px, in other words 0.3px… As pixels are the smallest units on computer screens, anything less than 1px can not be displayed at all. )

By not showing the icon, Opera is following the instructions in the code. Perhaps IE contains some extra routines to catch and ignore impossibly small cell widths. The page wasn't technically violating the standard. Nevertheless, it is a situation where we can only show the page as the webmaster intended by ignoring what the webmaster actually tells us to do.

Another issue is the Opodo-problem I wrote about in this article:

<http://my.opera.com/community/dev/jsdebug/>

The ECMAScript standard is absolutely clear that selecting something that does not exist should cause an error and stop the script. Following the standard broke Opodo.

This is not the only reason why some pages do not work with Opera – the other big reason is browser detection. But this reason is what makes it so hard to be compatible with all pages. First you implement the standards as well as possible (in itself a big job) and then you will have to discover, analyse and implement all the little details in general use that are actually standards violations or illogical coding mistakes tolerated by the other browsers.

Advertisements

2 thoughts on “When following the specification breaks pages

  1. Hi Hallvord,

    I also looked at that site and came to the same conclusion. What is surprising it that not only IE displays it, but FireFox too. Why would quirks mode in those two browsers both adapt to this obviously ridiculous element width?

  2. Probably because it is obviously ridiculous…
    It's just so silly to have to protect webmasters from their own mistakes all the time.. :irked:

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s