Now that IE9 supports
If we can support ie8 (@31%) we can forever forget attachEvent.addEventListener
and IE7's market share is diminishing (goodle analytics tell me that ie7 and older is at 14% and loses 2% per month).That mean we support all current browsers but not ie7 and older.
ie8.js:
/*@cc_on @if (@_jscript_version >= 9) // >ie9========================================= @elif (@_jscript_version == 5.8) // ie8=========================================
if (!document.addEventListener && document.attachEvent){ HTMLDocument.prototype.addEventListener = Element.prototype.addEventListener = Window.prototype.addEventListener = function (type, fCallback, capture) { var sEvent = "on" + type; if (capture) { throw new Error("IE does not support capture"); } var that = this; this.attachEvent(sEvent, function (e) { Object.defineProperty(e, 'currentTarget', { get: function () { return that; } }); Object.defineProperty(e, 'eventPhase', { get: function () { return (e.srcElement == that) ? 2 : 3; // "AT_TARGET" = 2, "BUBBLING_PHASE" = 3 } }); var time = new Date(); Object.defineProperty(e, 'timeStamp', { get: function () { return time; } }); fCallback.call(that, e); }); }; Object.defineProperty(Event.prototype, 'target', { get: function () {return this.srcElement;} }); Event.prototype.stopPropagation = function () {this.cancelBubble = true;}; Event.prototype.preventDefault = function () {this.returnValue = false;}; HTMLDocument.prototype.removeEventListener = Element.prototype.removeEventListener = Window.prototype.removeEventListener = function (type, fCallback) { this.detachEvent("on"+type,fCallback); }; }
//@elif (@_jscript_version == 5.7 && window.XMLHttpRequest) //ie7 @else //ie older ================================================= alert("This version of IE is not supported! Use at least:\n"+ "IE 8.0\n"+"Firefox 4\n"+"Chrome 6.0\n"+"Opera 10\n"+"Safari 4"); @end @*/
No comments:
Post a Comment