diff --git a/src/library_glfw.js b/src/library_glfw.js index 7a07e3633e98d..052a561468283 100644 --- a/src/library_glfw.js +++ b/src/library_glfw.js @@ -419,7 +419,10 @@ var LibraryGLFW = { // This logic comes directly from the sdl implementation. We cannot // call preventDefault on all keydown events otherwise onKeyPress will // not get called - if (event.key == 'Backspace' || event.key == 'Tab') { + // Prevent default backspace and tab behavior when the target + // is not an input or textarea. Otherwise, no text in the site can be deleted. + if (event.target.tagName !== "INPUT" && event.target.tagName !== "TEXTAREA" && + (event.key == 'Backspace' || event.key == 'Tab')) { event.preventDefault(); } }, diff --git a/src/library_sdl.js b/src/library_sdl.js index a0a0edb4c6c19..c5bffe5a5c896 100644 --- a/src/library_sdl.js +++ b/src/library_sdl.js @@ -696,8 +696,13 @@ var LibrarySDL = { // won't fire. However, it's fine (and in some cases necessary) to // preventDefault for keys that don't generate a character. Otherwise, // preventDefault is the right thing to do in general. - if (event.type !== 'keydown' || (!SDL.unicode && !SDL.textInput) || (event.key == 'Backspace' || event.key == 'Tab')) { - event.preventDefault(); + // Prevent default backspace and tab behavior when the target + // is not an input or textarea. Otherwise, no text in the site can be deleted. + if (event.type !== 'keydown' || + (!SDL.unicode && !SDL.textInput) || + ((event.key == 'Backspace' || event.key == 'Tab') && + event.target.tagName !== "INPUT" && event.target.tagName !== "TEXTAREA")) { + event.preventDefault(); } if (event.type == 'mousedown') {