Why Microsoft Internet Explorer 11 is the worst thing that could happen to us
I just wrote a comment about the fact that Microsoft is high time to stop mocking web developers and switch to the Gecko engine. Many, apparently, considered this an inappropriate joke; Nevertheless, this is not a joke at all, but a statement of fact. Those who do not agree with this, apparently have not yet tried to develop for this wonderful browser.
Let me tell you what a wonderful process this is.
How many browsers do you support, dear developers? Not so long ago, five years ago, this list was pretty simple: IE6, IE7, Opera, Firefox, Chrome. Five browsers, plus some minor variations between 2 and 3 Firefox and 9 and 10 Opera.
How many browsers do we support now?
Firefox, Chrome and Opera are still here. Firefox and Chrome have long switched to a short release cycle, the last artifact of a non-automatic update (Firefox 3.6) not so long ago was finally lost from the devices. The opera should go to the same cycle in the near future - and the latest versions of Opera / Presto did not add a special headache. Yandex.Browser has been added, which is inside the same Chromium, although it is updated less frequently.
And finally, to the question about IE: how many versions of IE do we have to support? In October, according to li.ru, the shares of different versions of Internet Explorer in runet were as follows: IE10 - 4%, IE8 - 2.3%, IE9 - 1.7%, IE7 - 0.7% plus invisible on devices IE11, which should recapture IE10 with the release of Windows 8.1 some share. Those. it seems to us that this is one or two versions of the browser, if you are ready to donate 4.7% of the audience, or three or five - if you are not ready, or suddenly you are writing a product for a country with a higher share of IE.
No matter how! Listen carefully.
Internet Explorer, starting with, God forgive me, the eighth version comes with a set of engines from previous versions. IE8 can work in IE7 mode and Quirks Mode (in fact, IE5.5!). IE9 can work in modes 9, 8, 7 and Quirks. IE10 can work in modes 10, 9, 8, 7 and Quirks. IE11 can work in modes 11, 10, 9, 8, 7 and Quirks. And this, attention, DIFFERENT engines! I don’t know what they ran into when they made this decision, but IE10 mode in IE11 is not IE10 at all! Here, for example, in IE9-10 there is a bug with incorrect positioning of canvas on z-index, which was decided by setting him background-color: rgba (255, 255, 255, 0). In IE11, in IE10 mode, this bug was carefully ported by excellent developers from Redmond, but the workaround was forgotten and now you cannot use canvas with absolute positioning there as be. Absolutely.
In total, if you, quite by accident, write some kind of library or just want to code on different domains, then right now you need to support (how many?) TWENTY different versions of Internet Explorer! Twenty versions of a browser that uses less than 10% of the audience! For a second, Firefox has had 28 major releases since its inception, Chrome has 32 major releases.
And this is just the beginning, guys. The spirit of the old school is incredibly strong in Redmond: all of these versions of Internet Explorerwill be supported by Microsoft (how many how many?) 10 years! An entertaining task on an oral account: to calculate how many versions of IE we have to support after 5 years.
Paul Irish wrote about this wonderful article back in 2011: www.paulirish.com/2011/browser-market-pollution-iex-is-the-new-ie6 . But even he could not predict the whole tenacity of Microsoft developers.
Shaw ?! That's not all?!
That's not all, my little red-eyed. In IE10-11, Microsoft introduced a small cart of fresh and revolutionary ideas.
To begin with, IE11 comes with such a user agent:
Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko
What is great about it? There is NO VERSION of Internet Explorer itself! In general, the words "MSIE" are no more. Do you know why? Because Microsoft believes that their browser, attention, does not need to be detected by the user agent, since it supports all the latest standards and should not be distinguished from other new browsers.
Let me repeat again: the developers of the browser, which comes with 6 different engines that emulate the bugs of previous versions of this browser, starting in 1999, say that it does not need to be determined by the user agent.
At the same time, absolutely the same people between the last Developer Preview IE11 and the final RTM release take and tear off vendor prefixes and break a couple of dozen backward compatibles, as kindly reported in their msdn: msdn.microsoft.com/en-us/library/ ie / dn304886% 28v = vs. 85% 29.aspx
Yes. If your code works fine in Developer Preview, this does not mean at all that it will work in the release version, which will suddenly roll out to a couple of tens of millions of people around the world at once. But you in no case do not detect the version of the user agent!
Figs with it, with Developer Preview. In their beautiful craft, you need to distinguish the version of the axis under which it works! I'm serious.
Here are people sitting. They probably have written something like Senior Software Architect in their work room. Come up withthe PointerEvents standard , in which, in order to fix it, everything is mature - the special navigator.pointerEventsEnabled flag indicates whether the browser supports pointer events or not. So that, you know, no one can detect anything by the user agent, but everything is like in normal browsers.
And then suddenly it turns out that for the same people, gesture processing falls in IE10 / Win7. Here it is written directly in msdn:
Note The APIs we discuss in this section aren't supported in Windows 7 or earlier.
So in addition to 20 different versions of IE, you have at least two different versions of the OS - Win7 and Win8. In fact, there are more of them - there is also Windows Phone and Windows RT, and in Windows 8 there are still two browser modes - metro and desktop. They are all different. We were lucky, we did not find any directly noticeable bugs in order to keep separate branches of the code also under these axes - not the fact that you will be just as lucky. Well, how many IE versions did it get? I'm already confused, but probably under a hundred.
And now - dessert! Let’s say you just write web pages, you don’t care about browser modes and you’re wondering why to take a steam bath - the site can’t switch to any compatibility mode itself, right?
I have some bad news for you guys. Come here:
And look for your site there.
Do you know what it is? This is the global Compatibility List, which includes sites that, according to Microsoft, should be shown in one of the compatibility modes.
No, seriously, they browse the entire Internet and compile a registry of sites that behaved badly!
Do you know how sites get on this list? Microsoft releases preview versions of its browsers. They have a special button in the address bar - show this site in compatibility mode. Microsoft collects anonymous statistics - if you often poke this button, the site ends up in the registry.
Seriously, they don’t even hide it. It seems that even a little proud.
To get out of this list is very simple - write to Microsoft support, yeah.
Well, the cherry on the cake: suppose I convinced you and you regulate in which mode the page should be displayed using a special meta in order to avoid unnecessary problems. So, in IE11 (at least in the RTM version, it’s too lazy to check now) it doesn’t work - the fact of being in the compatibility list is prioritized by the X-UA-Compatible webmaster!
Dear Microsoft! Please stop mocking us and screw the Gecko engine into your so-called product.