msRequestFullscreen не работает в случае события keydown (IE 11)

#javascript #internet-explorer #keydown #html5-fullscreen

Вопрос:

Я работаю с полноэкранным api.

Я добавил этот полифилл:

 let doc = document as any;
if (!doc.requestFullscreen) {
  document.body.requestFullscreen = doc.body.mozRequestFullScreen || 
    doc.body.webkitRequestFullscreen || doc.body.msRequestFullscreen;
  document.exitFullscreen = doc.mozCancelFullScreen || doc.webkitExitFullscreen || 
    doc.msExitFullscreen;
}
 

У меня есть кнопка пользовательского интерфейса для включения полноэкранного режима, и все работает нормально (chrome IE 11, edge, opera, firefox)

Также у меня есть обработчик ввода ключа:

 if (args.keyCode === 70) {
  args.preventDefault();
  if (!this.isInFullScreen) {
    document.body.requestFullscreen();
  } 
  else {
    document.exitFullscreen();
  }
  this.InFullScreen = !this.isInFullScreen;
}
 

Но включение/выключение полноэкранного режима нажатием клавиши F не работает в IE 11.
Функция msRequestFullscreen просто ничего не делает.
Нет никаких ошибок консоли или smth.
В других браузерах работает нормально.
Как я могу решить эту проблему?

Ответ №1:

Я могу воспроизвести проблему. msRequestFullscreen работает в IE 11, но просто не работает в keyCode событии.

В качестве обходного пути я предлагаю вам использовать ActiveXObject SendKeys F11. Это может сделать его полноэкранным в IE 11. Вы можете добавить следующий код:

 if ("ActiveXObject" in window) {
   var wscript = new ActiveXObject("Wscript.shell");
   wscript.SendKeys("{F11}");
}
 

Комментарии:

1. Спасибо вам за ваш ответ. Это обходное решение добавляет некоторые неудобства для пользователя. Нужно добавить сайт в список надежных и изменить некоторые настройки. И вы не можете выйти из полноэкранного режима с помощью щелчка пользовательского интерфейса или повторного нажатия клавиши F, работает только F11.

2. Да, для этого необходимо изменить некоторые настройки IE. Я также нахожу похожую тему , и, похоже, сейчас нет других решений. Поскольку IE собирается уйти на пенсию, я не уверен, что эта проблема будет исправлена. Давайте подождем, чтобы посмотреть, есть ли у других членов сообщества какие-либо другие обходные пути.