+ if ( CKEDITOR.env.ie )\r
+ {\r
+ // Override keystrokes which should have deletion behavior\r
+ // on control types in IE . (#4047)\r
+ domDocument.on( 'keydown', function( evt )\r
+ {\r
+ var keyCode = evt.data.getKeystroke();\r
+\r
+ // Backspace OR Delete.\r
+ if ( keyCode in { 8 : 1, 46 : 1 } )\r
+ {\r
+ var sel = editor.getSelection(),\r
+ control = sel.getSelectedElement();\r
+\r
+ if ( control )\r
+ {\r
+ // Make undo snapshot.\r
+ editor.fire( 'saveSnapshot' );\r
+\r
+ // Delete any element that 'hasLayout' (e.g. hr,table) in IE8 will\r
+ // break up the selection, safely manage it here. (#4795)\r
+ var bookmark = sel.getRanges()[ 0 ].createBookmark();\r
+ // Remove the control manually.\r
+ control.remove();\r
+ sel.selectBookmarks( [ bookmark ] );\r
+\r
+ editor.fire( 'saveSnapshot' );\r
+\r
+ evt.data.preventDefault();\r
+ }\r
+ }\r
+ } );\r
+\r
+ // PageUp/PageDown scrolling is broken in document\r
+ // with standard doctype, manually fix it. (#4736)\r
+ if ( domDocument.$.compatMode == 'CSS1Compat' )\r
+ {\r
+ var pageUpDownKeys = { 33 : 1, 34 : 1 };\r
+ domDocument.on( 'keydown', function( evt )\r
+ {\r
+ if ( evt.data.getKeystroke() in pageUpDownKeys )\r
+ {\r
+ setTimeout( function ()\r
+ {\r
+ editor.getSelection().scrollIntoView();\r
+ }, 0 );\r
+ }\r
+ } );\r
+ }\r
+ }\r
+\r