Index: _source/core/dom/domobject.js
===================================================================
--- _source/core/dom/domobject.js	(revision 5481)
+++ _source/core/dom/domobject.js	(revision )
@@ -84,10 +84,10 @@
 			{
 				var listener = nativeListeners[ eventName ] = getNativeListener( this, eventName );
 
-				if ( this.$.addEventListener )
-					this.$.addEventListener( eventName, listener, !!CKEDITOR.event.useCapture );
-				else if ( this.$.attachEvent )
+				if ( this.$.attachEvent )
 					this.$.attachEvent( 'on' + eventName, listener );
+				else if ( this.$.addEventListener )
+					this.$.addEventListener( eventName, listener, !!CKEDITOR.event.useCapture );
 			}
 
 			// Call the original implementation.
@@ -107,10 +107,10 @@
 				var listener = nativeListeners && nativeListeners[ eventName ];
 				if ( listener )
 				{
-					if ( this.$.removeEventListener )
-						this.$.removeEventListener( eventName, listener, false );
-					else if ( this.$.detachEvent )
+					if ( this.$.detachEvent )
 						this.$.detachEvent( 'on' + eventName, listener );
+					else if ( this.$.removeEventListener )
+						this.$.removeEventListener( eventName, listener, false );
 
 					delete nativeListeners[ eventName ];
 				}
@@ -128,10 +128,10 @@
 			for ( var eventName in nativeListeners )
 			{
 				var listener = nativeListeners[ eventName ];
-				if ( this.$.removeEventListener )
-					this.$.removeEventListener( eventName, listener, false );
-				else if ( this.$.detachEvent )
+				if ( this.$.detachEvent )
 					this.$.detachEvent( 'on' + eventName, listener );
+				else if ( this.$.removeEventListener )
+					this.$.removeEventListener( eventName, listener, false );
 
 				delete nativeListeners[ eventName ];
 			}
