2014-09-22 6 views
1

Я хочу, чтобы при нажатии кнопки «ОК» в поле подтверждения вся веб-страница переходила на полноэкранный режим, но при этом получалась ошибка TypeError: docelem.requestFullscreen is not a function. Я пробовал все, кроме ничего ...Как изменить полноэкранный режим всей веб-страницы с помощью подтверждения()?

var conf = confirm("Fullscreen mode?"); 
var docelem = document.documentElement; 
if (conf == true) { 
    docelem.requestFullscreen(); 
} 
else if (conf == true) { 
    docelem.mozRequestFullScreen(); 
} 
else if (conf == true) { 
    docelem.webkitRequestFullScreen(); 
} 
else if (conf == true) { 
    docelem.msRequestFullscreen(); 
} 

Некоторое решение? или это невозможно с подтверждением()? Потому что с кнопкой работает:

(function() { 
    var fullscreenon = document.getElementById("fullscreenbutton");//button Id 
    if (fullscreenon) { 
     fullscreenon.addEventListener("click", function() { 
      var docelem = document.documentElement; 
      if (docelem.requestFullscreen) { 
       docelem.requestFullscreen(); 
      } 
      else if (docelem.msRequestFullscreen) { 
       docelem.msRequestFullscreen(); 
      } 
      else if (docelem.mozRequestFullScreen) { 
       docelem.mozRequestFullScreen(); 
      } 
      else if (docelem.webkitRequestFullScreen) { 
       docelem.webkitRequestFullScreen(); 
      } 
     }, false); 
    } 
})(); 
+1

«Потому что с кнопкой работает» - можете ли вы опубликовать код своей рабочей кнопки? Это поможет определить то, что вы не понимаете. – apsillers

ответ

5

Прежде всего, ваши условия разные между 2 образцами. Правый код:

var conf = confirm("Fullscreen mode?"); 
var docelem = document.documentElement; 

if (conf == true) { 
    if (docelem.requestFullscreen) { 
     docelem.requestFullscreen(); 
    } 
    else if (docelem.mozRequestFullScreen) { 
     docelem.mozRequestFullScreen(); 
    } 
    else if (docelem.webkitRequestFullscreen) { 
     docelem.webkitRequestFullscreen(); 
    } 
    else if (docelem.msRequestFullscreen) { 
     docelem.msRequestFullscreen(); 
    } 
} 

Во-вторых, и главное, вы не можете сделать полноэкранный режим вашей страницы без взаимодействия с пользователем. Это ограничение безопасности. Если вы вызываете код выше щелчком пользователя, это будет работа. Например:

document.onclick = function (argument) { 
    var conf = confirm("Fullscreen mode?"); 
    var docelem = document.documentElement; 

    if (conf == true) { 
     if (docelem.requestFullscreen) { 
      docelem.requestFullscreen(); 
     } 
     else if (docelem.mozRequestFullScreen) { 
      docelem.mozRequestFullScreen(); 
     } 
     else if (docelem.webkitRequestFullScreen) { 
      docelem.webkitRequestFullScreen(); 
     } 
     else if (docelem.msRequestFullscreen) { 
      docelem.msRequestFullscreen(); 
     } 
    } 
} 

Если вы щелкнете в любом месте страницы, активизируется полноэкранный режим. Подробнее: https://stackoverflow.com/a/20533579/198062

+0

кнопка «ОК» подтверждения() не является пользователем взаимодействия? только пользовательское взаимодействие, если элемент, который находится в html, как тело, кнопка и т. Д. Действительно? –

+1

Да, я думаю .. :) Возможно, вы можете использовать событие «mousemove» элемента body как «взаимодействие с пользователем». –

+1

Определение «взаимодействие с пользователем» в MDN по адресу https://developer.mozilla.org/en-US/docs/Web/API/Fullscreen_API заключается в том, что requestFullscreen() может запускаться только из обработчика события. –