openlayers/ol3 — pull request #1605 by austinhyde (2014-01-27 22:10:58+00:00)
Title: Legacy IE (7-9) Compatibility

These changes add compatibility for Internet Explorer 7-9 for most existing features of the DOM renderer, as well as some small improvements to the DOM renderer.

Namely:
* Adds naturalWidth and naturalHeight properties to images loaded by ImageTile, needed to render image based tile sources (41fa53b)
* Fixes issues with mouse events in IE 7-8 (e92d366)
* Fallback to non-rgba styles in older browsers (3013674)
* Use explicit DOM nodes for the zoom control instead of CSS :before and :after pseudo-classes (a4901e6)
* Fix issues with dragging behavior in IE 7-8, where IE would interpret click+move as either image drag or text selection (faef6a3)
* Switch between 2D/3D CSS transforms based on feature detection, not hardcoded booleans (7d1df4c)
* Add support for matrix-based transforms in IE 7-8 via CSS filter and in IE 9 via prefixed CSS property, needed for smooth zoom animations (7d1df4c, e5d0822)
* Add support for layer opacity in IE 7-8, via CSS filter (3f220c5)
* Fix issue with an IIFE calling Canvas API during script load - instead defer until needed (29bb04e)
* Fix issue with DOM renderer layers getting out of order after consecutive remove+inserts (9e9d9a0)

As a result, the following features work smoothly on Internet Explorer 7-9:
* Panning via mouse drag
* Zooming via scroll wheel
* Zooming via zoom control
* Zooming via zoom slider control
* Zooming via shift+drag
* Zoom control styling
* Zoom slider control styling
* Attribution control styling
* Zoom animations
* Pan animations (particularly kinetic panning)
* Tile layer rendering
* Image layer rendering

Things that *do not* work in IE 7-9, and are not considered in this PR:
* Map rotation (that's quite the rabbit hole...)
* Vector layer rendering - in the works
* FullScreen control styling
* ScaleLine control styling
* ZoomToExtent control styling

Feel free to cherry-pick this or let me know if you think more needs done before accepting.