Javascript работает только в Google Chrome в режиме отладки

Приведенный ниже код отлично работает в Internet Explorer, но в Chrome он работает, только если вы находитесь в режиме отладки, что не так?

window.onresize = function (e) {
 if (window.outerWidth === screen.width && window.outerHeight == screen.height) {
    if (!fullscreen) {
        fullscreen = true;
        onfullscreenchange(true);
    }
 } else {
    if (fullscreen) {
        fullscreen = false;
        onfullscreenchange(false);
    }
  }
};


function onfullscreenchange(full) {
    alert(full);
}

person Luiz Rogério Scudeletti    schedule 24.07.2014    source источник
comment
Какую ошибку вы испытываете?   -  person pseudosavant    schedule 25.07.2014
comment
И что вы пытаетесь сделать с помощью этого кода?   -  person pseudosavant    schedule 25.07.2014
comment
@pseudosavant Google Chrome ничего не делает, если только он не находится в режиме отладки.   -  person Luiz Rogério Scudeletti    schedule 25.07.2014
comment
Вы определили fullscreen перед его использованием?   -  person Chris    schedule 25.07.2014
comment
Что такое режим отладки? Вы имеете в виду, что он работает только с открытым DevTools?   -  person Rocket Hazmat    schedule 25.07.2014
comment
@pseudosavant Мне нужно изменить макет веб-сайта при входе в полноэкранный режим и вернуться в нормальное состояние при выходе из полноэкранного режима.   -  person Luiz Rogério Scudeletti    schedule 25.07.2014
comment
Я предполагаю, что под полноэкранным режимом вы имеете в виду нажатие F11? Будете ли вы просто применять другой CSS к странице, если она находится в полноэкранном режиме.   -  person pseudosavant    schedule 25.07.2014
comment
Режим отладки @RocketHazmat = F12, Источники и поставить паузу в javascript.   -  person Luiz Rogério Scudeletti    schedule 25.07.2014
comment
@pseudosavant Если onfullscreenchange (true), я вызываю функцию, если onfullscreenchange (false), я вызываю другую. Но хром, кажется, игнорирует все, но не показывает ошибок.   -  person Luiz Rogério Scudeletti    schedule 25.07.2014


Ответы (2)


Вот пример для прослушивания, если окно было полноэкранным с помощью F11. Этот код прослушивает не только события resize, но и F11, поскольку событие resize не запускается в Chrome при входе в полноэкранный режим.

// Function to check if the window is fullscreened or not
var isFullscreen = function(){
  return (window.outerWidth === screen.width && window.outerHeight === screen.height);
};

// Function to run when window size has changed
var screenSizeChange = function(){
  if (isFullscreen()) {
    document.querySelector('body').innerHTML = 'You are in fullscreen mode';
  } else {
    document.querySelector('body').innerHTML = 'You are in windowed mode';
  }
};

// Run screenSizeChange when `resize` event is triggered
window.addEventListener('resize', screenSizeChange, false);

// Run screenSizeChange when F11 is pressed
window.addEventListener('keyup', function(e){
  if (e.keyCode === 122) { // Listen for F11
    screenSizeChange();
  }
}, false);

Попробуйте живую версию: http://jsbin.com/ciqeb/4/edit?js,output

person pseudosavant    schedule 24.07.2014
comment
Проб. ничего плохого в вашем коде, но я думаю, что вместо того, чтобы предлагать просто другое решение, вы должны направить ОП на исправление своего собственного кода - person Chris; 25.07.2014
comment
Если вы нажмете F11 несколько раз, этот код будет потерян и не будет выполнять правильную функцию. - person Luiz Rogério Scudeletti; 25.07.2014
comment
Похоже, это действительно ошибка Google Chrome. Я добавил ведение журнала, и, по-видимому, когда вы часто входите / выходите из полноэкранного режима, он может перестать правильно сообщать window.outerHeight/Width. См. здесь: jsbin.com/ciqeb/5/edit - person pseudosavant; 25.07.2014

Попробуй это

var fullscreen;

window.onresize = function (e) { 
 if (window.outerWidth === screen.width && window.outerHeight == screen.height) {
    console.log('fullscreen');
    if (fullscreen !== 1) {
        fullscreen = 1;
        onfullscreenchange(true);
    }
 } else {
    console.log('!fullscreen');
    if (fullscreen !== 0) {
        fullscreen = 0;
        onfullscreenchange(false);
    }
  }
};


function onfullscreenchange(full) {
    alert(full);
}
person Chris    schedule 24.07.2014
comment
Не работает в Google Chrome, код не показывает ошибки, Chrome, кажется, игнорирует код. - person Luiz Rogério Scudeletti; 25.07.2014
comment
Это должно нормально работать в любом браузере. Хотя, это зависит от того, что вы ожидаете от него. Вы умеете пользоваться консолью разработчика? - person Chris; 25.07.2014
comment
Если вы используете этот код в Google Chrome и нажимаете F11, предупреждение не отображается, так как в Internet Explorer оно работает нормально. - person Luiz Rogério Scudeletti; 25.07.2014
comment
Вероятно, это связано с тем, что событие изменения размера не срабатывает при переключении в полноэкранный режим. Вот почему мое решение также реагирует на F11. - person pseudosavant; 25.07.2014
comment
Не могли бы вы создать jsbin/jsfifdle, демонстрирующий проблему, с которой вы столкнулись? - person pseudosavant; 25.07.2014
comment
Извините, я не могу протестировать полноэкранный режим F11, так как я на OS X (работает здесь). Если вам удастся исправить свой код, вы должны протестировать его во всех браузерах/ОС. - person Chris; 25.07.2014