diff --git a/core/misc/matchMedia.js b/core/misc/matchMedia.js index 3a0807e..66f9504 100644 --- a/core/misc/matchMedia.js +++ b/core/misc/matchMedia.js @@ -26,9 +26,6 @@ window.matchMedia = window.matchMedia || (function (doc) { div.style.cssText = "position:absolute;top:-100em"; fakeBody.style.background = "none"; fakeBody.appendChild(div); - // Ensure addEventListener and removeEventListener are defined. - window.addEventListener = window.addEventListener || window.attachEvent || function () {}; - window.removeEventListener = window.removeEventListener || window.detachEvent || function () {}; /** * A replacement for the native MediaQueryList object. * @@ -81,8 +78,15 @@ window.matchMedia = window.matchMedia || (function (doc) { 'callback': callback, 'handler': handler }); - window.addEventListener('resize', handler); - window.addEventListener('orientationchange', handler); + // Associate the handler to the resize and orientationchange events. + if ('addEventListener' in window) { + window.addEventListener('resize', handler); + window.addEventListener('orientationchange', handler); + } + else if ('attachEvent' in window) { + window.attachEvent('onresize', handler); + window.attachEvent('onorientationchange', handler); + } }, /** * Polyfill the removeListener method of the MediaQueryList object. @@ -93,8 +97,15 @@ window.matchMedia = window.matchMedia || (function (doc) { removeListener: function (callback) { for (var i = 0, listeners = this.listeners; i < listeners.length; i++) { if (listeners[i].callback === callback) { - window.removeEventListener('resize', listeners[i].handler); - window.removeEventListener('orientationchange', listeners[i].handler); + // Disassociate the handler to the resize and orientationchange events. + if ('removeEventListener' in window) { + window.removeEventListener('resize', listeners[i].handler); + window.removeEventListener('orientationchange', listeners[i].handler); + } + else if ('detachEvent' in window) { + window.detachEvent('onresize', listeners[i].handler); + window.detachEvent('onorientationchange', listeners[i].handler); + } listeners.splice(i, 1); } }