being compatible with the dark matter of the web

A forum thread asks the oft rehearsed question "why can't Opera be more compatible with websites". Allow me to respond with a blog post since that discussion is somewhat noisy already..

Simply: Opera 9 already supports the W3C and ECMA standards that are widely used, it also supports lots of non-standard and pre-standard features to the extent that these are documented by others or by our own testing. Compatibility today is in the details. A big, generic question like "what technologies should Opera support to be more compatible" won't get you far. If a problem isn't caused by sniffing or similar broken code, the likely culprit is a minor detail being different across browsers, not having to support another "technology". Hence, discussing compatibility needs to dive into the technical details and avoid sweeping generalisations – and I hope to provide some examples that are specific enough to perhaps bring the discussion forward:


Careful and correct implementation of standards goes a long way, unless standards differ from reality. Values of event.button is a damned-if-you-do, damned-if-you-dont scenario: IE and the DOM standard numbers mouse buttons differently, and there is lots of content depending on either of these. Depending on how the site detects "IE" custom scroll bars, mouse-drags and other fancy mouse usage stops working. Options?

  • Break this half of the web
  • Break the other half of the web
  • Cry and tear your hair out


XMLDocument object
This is an interesting Firefox thingy. It's not in any standard, Firefox just happens to make it available to scripts because internal Firefox architecture has an "XMLDocument" class. While this probably makes sense for Firefox's architecture it doesn't make sense for Opera's. We didn't really notice the XMLDocument object until we investigated why Sarissa doesn't work 100% in Opera. Yahoo Mail Beta uses it too. Options?

  • Complain to Mozilla because cross-browser compatibility suffers from their exposed internals?
  • Spend time tracking how it works and implement it as yet-another-nonstandard-we-must-support?
  • Bug Mozilla to have it standardised so that we can implement it?
  • Nag websites about not using it, or detecting it correctly?

Some stuff mentioned in the forum thread uses XUL. Yes, this is a reasonably open, non-standard technology invented by Mozilla which Opera has chosen not to support. The main reason we don't is very pragmatic: there hasn't been that much demand for it. Lack of this technology is very unlikely to be the reason why your Opera-newbie friends complain about sites not working in Opera. Options?

  • Support
  • Not support
  • Wait for standardisation, then support.
  • Wait for actual usage growing on the web, then support

Windows MediaPlayer scripting
Now this is truly a skeleton in the compatibility closet. WMP's latest scripting support only works with the ActiveX control. Since Opera doesn't support ActiveX we're stuck with an outdated version of WMP's scripting engine, and quite a lot of fancy video player user interfaces on the web are not written to fall back to use the older version if ActiveX isn't available. Did you say "standard"? Bah, there is no such thing in the world of plugin vendors – vendor lock-in is the name of the game here. WMP, Real, QuickTime, Flash – the scripting interfaces are all different, and once a developer has learnt one and a company has invested in building a website on one the cost of switching is naturally high. Options?

  • Support ActiveX?
  • Fake ActiveX?
  • Add some other kind of compatibility layer?
  • Continue the endless quest of web openers?

Dark matter

They say most of the universe consists of dark matter. Many, many compatibility problems are caused by the dark matter known as convention. All the stuff that we have to do simply because other browsers do. If a site forgets to add a closing SPAN tag, the parser constructing the DOM is going to have to try to compensate. When it turns out that IE's innerHTML in such a case apparently is inconsistent with the DOM it has built, kaboom – is broken in Opera. Hit by the dark matter..

Some things can't and won't be standardised (who would have thought that simply taking less than one second opening a popup window breaks a page??) but one of the greatest frontiers of web compatibility work is to expand the standards to cover much more of the "dark matter". WHATWG rises to the challenge and W3C seems to be getting the message that the dark matter of convention is one of the most serious threats to cross-browser compatibility.


15 thoughts on “being compatible with the dark matter of the web

  1. I use three browsers at the same time and will spend sometime to digest your information. I find it is interesting to distinguish the differences among these three. Thank you for this post.

  2. :hat:Thank you Hallvord for all your efforts in this area. It's both entertaining and sad at the same time reading about all the antics web sites can get up to!

  3. :yes: :hat: :cheers:thanks for posting this!you mentioned that these are just some examples. if its okay with you, perhaps you can add more "dark matter" (I like your analogy) on your list here, whenever you become aware of others that are noteworthy.

  4. Personally I just not use crappy coded sites. Too bad that most users can't understand what is "crappy coded" means…I hope that there will appear more and more sites and services coded with standards and properly.

  5. Hello Hallvord, thank you for starting this discussion. I agree with you in terms of proprietary plugins or broken HTML. That is crap nobody should support. Even standards ignoring browsers like IE or Firebird should fix such behavior in their newer versions.On the other hand a question: Have you ever tried to add some AJAX-elements or even less some Javascript (ECMA) parts to a HTML-page? That is the point where Opera is a real pain in the ass. It's not about standards and buggy programming in this field. It's about features opera lacks. You may like or dislike the Web 2.0 and this new faked interactivity of websites, but every time some webprgrammer misses a feature he puts an errorpage on the screen, explaining why some function is broken and suggest using a more up-to-date browser – which is very often not Opera. Programmers are used to do it in at least three ways to support all the special behavior of this crowd of HTML-display-programms. But they hate to find out, that well known and common features they use are not supported by just one browser. They like beeing supported in their work and find modern features that makes their programms look fancy :-)Don't complain any longer about the evil competition pressing features into the market. Opera is not in the market position to enforce their interpretation of standards. Face it: you have to run with the pack. Just sit down and do your homework.Sven

  6. Have you ever tried to add some AJAX-elements or even less some Javascript (ECMA) parts to a HTML-page? That is the point where Opera is a real pain in the ass. It's not about standards and buggy programming in this field. It's about features opera lacks.

    Please say which features Opera lacks to be supports by all Web 3.45.56.PI websites. Why is it a pain in the "arse" ? Such vage claims are as common as Opera being blocked, and both don't make sense.

    Face it: you have to run with the pack. Just sit down and do your homework.

    You are the one that should have done the homework.Opera supports by far more DOM and proprietary features than any other browser. Problem is, the features aren't detected. The only thing that is detected is Opera in the user agent string.

  7. Have you ever tried to add some AJAX-elements or even less some Javascript (ECMA) parts to a HTML-page? That is the point where Opera is a real pain in the ass. It's not about standards and buggy programming in this field. It's about features opera lacks.

    What really annoys me is people throwing out lines like "features Opera lacks", but not actually mentioning any of those supposed features! :mad:What features does Opera lack? Opera currently has the best W3C DOM support of any browser! About the only Javascript related "feature" Opera doesn't support is getters/setters – totally non-standard, and whoever thought up those abominations should be ashamed of themselves.

  8. xErath: Excellent news regarding Sarissa, thanks :DAbraxias: Another one on the list: custom context menu support. Opera has relatively buggy support for scripts detecting right-clicks even when this *is* enabled by users, and it has no support for the oncontextmenu event. This definitely comes high on the list of non-standard features Opera must implement to be more author-friendly.Sven1970: example URLs please. Saying "x and y doesn't work" without an example means I'll just be able to reply "x and y are implemented and SHOULD work" and it's nothing but noise in the discussion and gets us nowhere. The example URL can be some JS framework or library demo page or your own test case if you have time – just please provide a URL so that we can get somewhere with the discussion. Regarding "proprietary plugins or broken HTML" being "crap nobody should support" – then you simply aren't compatible with the web and NO end users will use your product.

  9. XMLDocument object: Spend time tracking how it works and implement it as yet-another-nonstandard-we-must-support?

    Isn't this documented? and shouldn't the fact that it is open-sourced allows Opera devs to study its internals more easily?

  10. ChiliJoe: it is probably documented, but end-user/JS-author documentation often isn't enough for implementing something so I expect some research is required. And reading source code of another browser is first of all a boring job, secondly since the architectures are different it may not be that useful, and thirdly we should never end up in a situation where we might be accused of copying source code from Moz.. so it's safer not to read it ;-p

  11. Hello Hallvord, hello others, sorry for not speaking native. You are right. General recriminations cause only bad emotions. Just look at some examples:* Try to import tiddlers with tiddlywiki. I didn't followed it, I just used firefox on this job. Saving a tiddlywiki locally is done in Opera by an ugly workaround with a java-applet. May be there is a more elegant way, just not found one.* Have you tried or newer "Google Documents and Spreadsheets?" Even with the Browsercheck-hack mentioned in the faq this Javascript-Application won't at least store documents, create pdf or spellcheck with Opera. (checked with 8.51)* Why is MathML with ASCIIMathML.js rendered so ugly? (with 8.51) * Why shows Opera 9 in a WML-document the legal entity   as " " and not " " as Opera 8.51 does?* Why has an Opera (V9.01) cached URL, fetched again with the HEAD-Method from XMLHttprequest no "Content-Type" nor "Content-Length" (with Opera 9) header? A not-cached has. In IE6 and Firefox2 it has, too. Look at on 2nd "Try the example" two times.Have a nice weekend and fun :-)SvenEdit: example urls.

  12. sorry for not speaking native. You are right. General recriminations cause only bad emotions. Just look at some examples:

    Hello to you too.So you've missed the point. You justify the argument that Opera is difficult to work with based on 2 bugs ? Again, what features does Opera miss to be supported more often by websites ?About tiddlywiki, it uses ActiveX for IE and Mozilla Components to access the hard drive. These are non-standard proprietary features. Opera uses the java approach, which isn't ugly. It's, compared to the 2 previous, much more interoperable and Java is a free open, fully documented, technology.About Google docs, former writely, the writely team worked hard for having compatibility with both IE, Mozilla, Opera and Safari. When google aquired it, they blocked Opera and Safari. Safari's name is all over writely's code. Writely works 100% with Opera !See this thread for a workaround Opera doesn't support MathML. This isn't a feature used by websites. It's a kind of markup to render math formulas, rarely used.See this thread for support with Opera claims are hit and miss.If you said Opera doesn't support contextmenu, or doesn't implement the famous Gecko capturing events bug, you'd be closer.So please base your discussion in a solid argument, otherwise this disussion will be as productive as ranting in asa dotzler's blog. Note that many users that post in this blog, like Hallvord and me, are experienced Opera users that know very well what it supports, its quirks and bugs, and constantly debug problems for Opera's sake. About 80% of the time Opera's has problem with a website, it's the websites problem, to mis-detect Opera's features, or some deliberate blocking.

  13. He-he! 😀 Just a live example of blocking for this post (blocked Opera and Firefox): you click on dates in calendar there should appear bunch of links with time. Nothing happens except page reload in Opera and Firefox. You need set ID as IE in Opera and than it's start working.I dicovered this site yesterday when trying to buy tickets to Baltimore Aquarium.Damn! I hate those webmasters! :furious:

  14. Sven: thanks for the example URLs – I'll just pick up the last two questions since xErath beat me to the others. The   problem in WML is indeed a bug. Regarding the XMLHttpRequest issue I can't reproduce it unfortunately. I tried a range of versions and builds installed on my computer and neither of them showed this behaviour. It sounds like a potentially serious issue so if you can reproduce it in a fairly recent version of Opera (preferably 9.02) I'll investigate again..

Leave a Reply

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

You are commenting using your 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