My personal beef was alpha channel support for PNG.
What killed IE for me is the developer experience. To get the value of a variable you had to:
alert(show_me_what_you_got) // [Object object]
Then some genius created a JS widget with an absolute positioned floating console that allowed me to inspect variables on a basic level.Then came Firefox and it was a game changer for development. It was no wonder every web developer rooted for IE to finally die.
https://en.wikipedia.org/wiki/Microsoft_Script_Debugger
No need for genius or waiting for Netscape to come up with something.
IE was a much better browser than Netscape and until Firefox, Mozilla wasn't really used outside of Linux distros.
> For a long time, all projects were IE-first, then you would worry about niche upstarts like Firefox.
This isn't quite true. Many of the early adopters of Firefox was web devs and enthusiasts and typically I developed on there first (mainly because of firebug) and as I went along I checked that IE worked. However I started my career just after IE7 was released.
> It wasn't until the launch of Chrome and Safari and the resurgence of Apple and OSX that there was any plausible alternative.
No not really (at least not in the UK). I noticed things shifting after the prevalence of smart phones. Chrome came out much later than Firefox and things were already starting to shift in Firefox's favour (non-IE browsers were getting upto 30% of traffic).
> IE wasn't "extra work", it was the primary objective.
That really wasn't my experience at all. But as I said I started my career near the end of IE's dominance.
No, IE was actually a much better browser in 1999-2000.
It crushed Netscape 4 even on web standards support. For example much of CSS was terribly broken in Netscape.
The bigger problem was that MS weren't all that bothered about migrating old IE users to new IE. When IE7 came out five years after IE6 it didn't work on legacy Windows and wasn't pushed in an XP update or service pack, so unlike its predecessor it peaked at less than 50% market share[1]. At that stage Firefox was far from the dominant browser but the delay had created a reason for it to exist and its market share to be non-trivial and ultimately overtake the second most popular MS browser. Overall a combination of Microsoft 6/7 and 8 still had a majority market share for a very long time, but since they were each very different browsers with large shares designers had to go to the effort of supporting multiple platforms anyway rather than just lazily optimising for latest IE. Which meant they also bothered to support Firefox etc, which meant W3C standards compliant browsers were viable alternatives for late adopters when web designers started serving 'outdated browser' warnings to IE6 users and the EU slapped MS with the Browser Choice ruling. Especially since often it was easier for end users to get a non-IE browser to work. First time I installed Firefox at work was when tech support wouldn't let me upgrade to IE7...
[1]it also wasn't the best browser of its time, unlike its predecessor was in 2001. But that didn't matter to the many people who just carried on using IE6
The app I work on has to support IE11 and it's easily the worst part of the job. Often times regressions are made because someone accidentally used some js keyword/feature that's not supported. The build takes forever because of IE, and so there is a flag IE_BUILD that's false most of the times until someone has to test in IE at which point they turn it on and wait for 10 mins for the thing to build. We had to implement theming, and for every other browser we used CSS variables but for IE we had to implement a hacky/complicated solution where we compiled customer specific CSS files.
In short, IE sucks and I wish it'd die.
1) Code normally and check compatibility of functions with the minimum version of IE. I then either polyfill the browser (if I understand the polyfill, some polyfills are quite large). Where I don't understand what the polyfill is doing or it is quite large (more than 40 or 50 lines) I then implement a specific work around and try to put it that logic in a separate function e.g. for dataset on Elements I have a function that detects whether data set exists and then just uses setAttribute with some regex munging as 90% of the time I only need to read and write dataset values and I rarely care about dom mutations.
2) Regarding styling. My approach is to that I style everything up and then use specific overrides for things that browsers can't do.
I also tend to avoid specific IE builds as you end up supporting almost two code bases. However I have years of intuition of what will and won't work in outdated browsers. However I appreciate that this isn't always possible or desirable depending on frameworks / libs used etc.
I honestly feel lack of this is what killed IE in the eyes of developers.