javascript - 无法在 webkit 浏览器的全屏模式下在文本输入中键入任何字母或数字

标签 javascript fullscreen keyboard-events

切换到全屏模式后(在 chrome 和 safari 上测试),我无法在文本输入中输入任何字母或数字,但我仍然可以输入特殊字符,如 *¨%£ 但没有简单的字母...

代码非常简单:

HTML

<button type="button" id="fullScreen">LAUNCH FULLSCREEN</button>
<input type="text" /> 

JS

function launchFullScreen(element) {
  if(element.requestFullScreen) {
    element.requestFullScreen();
  } else if(element.mozRequestFullScreen) {
    element.mozRequestFullScreen();
  } else if(element.webkitRequestFullScreen) {
    element.webkitRequestFullScreen();
  }
}

document.getElementById("fullScreen").addEventListener("mousedown", function(){
  launchFullScreen(document.documentElement);
}, false);

正如 Jan Dvorak 提到的,问题仅在使用 js 函数时出现,在使用浏览器内置的全屏按钮/快捷方式时不会出现该错误

查看实际效果:

http://jsfiddle.net/QwqT7/show/

更新 2:

刚刚在 Firefox for mac 上测试,全屏模式没有问题。 看来问题只出在 webkit 上。

最佳答案

这不是一个完美的解决方案,但至少它可以让 Chrome 响应键盘命令并让 Safari 使用无按键输入的全屏模式作为后备。

function launchFullScreen(element) {
  if(element.requestFullScreen) {
    element.requestFullScreen();
  } else if(element.mozRequestFullScreen) {
    element.mozRequestFullScreen();
  } else if(element.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT)){
    element.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT);
  }
  setTimeout(function() {
    if (!document.webkitCurrentFullScreenElement && element.webkitRequestFullScreen()) {
      element.webkitRequestFullScreen();
    }
  },100);
}

关于javascript - 无法在 webkit 浏览器的全屏模式下在文本输入中键入任何字母或数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16266897/

相关文章:

java - Java游戏的键盘输入

javascript - 使用 Jquery 或 Javascript 检查数组中是否存在特定 UserID 的最快方法是什么

javascript - 如何为所有TD添加类

vue.js - 如何在 Vue2Leaflet 中使用 Leaflet Fullscreen

c++ - OpenGL 全屏渲染

javascript - 具有角色按钮 : Clickable elements must be focusable and should have interactive semantics 的 anchor 链接内图像的可访问性

javascript - 使用 javascript 创建用户帐户时的 Firebase 安全问题

javascript - TCPSocket.发送: What happens when the buffer is full?

ios - 点击图像全屏

python - 同时使用 Matplotlib Slider 和 key_release_event