Isolution666
@Isolution666
Full-Stack Developer

Не правильно срабатывает функция при помощи onclick, в чём ошибка?

Речь идёт о раскрытии контента на весь экран, полностью. Данный скрипт с этой задачей справляется, вот код:

<script>
document.cancelFullScreen = document.cancelFullScreen || document.webkitCancelFullScreen ||      document.mozCancelFullScreen;
function onFullScreenEnter() {
  console.log("Enter fullscreen initiated from iframe");
};
function onFullScreenExit() {
  console.log("Exit fullscreen initiated from iframe");
};
function enterFullscreen(id) {
  onFullScreenEnter(id);
  var el =  document.getElementById(id);
  var onfullscreenchange =  function(e){
  var classGreen = document.getElementsByClassName('classGreen');
  for (var i = 0; i < classGreen.length; i++) {
    classGreen[i].className = (classGreen[i].className == 'classGreen' ? 'classGreen classRed' : 'classGreen');
  }		    
    var fullscreenElement = document.fullscreenElement || document.mozFullscreenElement || document.webkitFullscreenElement;
    var fullscreenEnabled = document.fullscreenEnabled || document.mozFullscreenEnabled || document.webkitFullscreenEnabled;
    console.log( 'fullscreenEnabled = ' + fullscreenEnabled, ',  fullscreenElement = ', fullscreenElement, ',  e = ', e);
  }
  el.addEventListener("webkitfullscreenchange", onfullscreenchange);
  el.addEventListener("mozfullscreenchange",     onfullscreenchange);
  el.addEventListener("fullscreenchange",             onfullscreenchange);
  if (el.webkitRequestFullScreen) {
    el.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT);
  } else {
    el.mozRequestFullScreen();
  }
  document.querySelector('#'+id + ' button').onclick = function(){
    exitFullscreen(id);
  }
}
function exitFullscreen(id) {
  onFullScreenExit(id);
  document.cancelFullScreen();
  document.querySelector('#'+id + ' button').onclick = function(){
    enterFullscreen(id);
  }
}
</script>


В этом коде есть функция, которую я добавил, чтобы отображать скрытый контент при обычном экране. Всё что делает эта функция, так это добавляет css class к элементу <div>, проблема возникает при повторном клике, картинка - скрытый элемент, которая в развёрнутом виде появляется на экране, во второй раз исчезает, третий раз появляется, четвёртый опять пропадает, короче отображается только по нечётному числу кликов.

Вот кусок кода, который косячит:

function enterFullscreen(id) {

  onFullScreenEnter(id);
  var el =  document.getElementById(id);
  var onfullscreenchange =  function(e){
	
  var classGreen = document.getElementsByClassName('classGreen');
  for (var i = 0; i < classGreen.length; i++) {
    classGreen[i].className = (classGreen[i].className == 'classGreen' ? 'classGreen classRed' : 'classGreen');
  }		  
	  
    var fullscreenElement = document.fullscreenElement || document.mozFullscreenElement || document.webkitFullscreenElement;
    var fullscreenEnabled = document.fullscreenEnabled || document.mozFullscreenEnabled || document.webkitFullscreenEnabled;
    console.log( 'fullscreenEnabled = ' + fullscreenEnabled, ',  fullscreenElement = ', fullscreenElement, ',  e = ', e);
  }


Подскажите пожалуйста в чём ошибка, и почему она происходит, я хочу понять.
Заранее благодарю.
  • Вопрос задан
  • 157 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы