【问题标题】:Javascript only works in Google Chrome in debug modeJavascript 仅适用于 Google Chrome 的调试模式
【发布时间】:2014-09-16 15:40:46
【问题描述】:

下面的代码在 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);
}

【问题讨论】:

  • 您遇到的错误是什么?
  • 还有,你想用这段代码完成什么?
  • @pseudosavant 谷歌浏览器什么都不做,除非它处于调试模式。
  • fullscreen在使用前定义了吗?
  • 什么是“调试模式”?你的意思是它只能在 DevTools 打开的情况下工作?

标签: javascript google-chrome dom-events fullscreen onresize


【解决方案1】:

试试这个

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);
}

【讨论】:

  • 在谷歌浏览器中不起作用,代码没有显示错误,Chrome似乎忽略了代码。
  • 这应该可以在任何浏览器上正常工作。不过,这取决于您期望它做什么。你知道如何使用开发者控制台吗?
  • 如果您在 Google Chrome 中使用此代码并按 F11,则不会显示警报,因为在 Internet Explorer 中它可以正常工作。
  • 这可能是因为在切换到全屏模式时不会触发调整大小事件。这就是我的解决方案也响应 F11 的原因。
  • 能否请您创建一个 jsbin/jsfifdle 来展示您遇到的问题?
【解决方案2】:

这里是一个监听窗口是否已按 F11 全屏显示的示例。此代码不仅侦听 resize 事件,还侦听 F11,因为在 Chrome 中进入全屏模式时不会触发 resize 事件。

// 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

【讨论】:

  • 问题。您的代码没有问题,但我认为您应该指导 OP 修复自己的代码,而不是提供另一种解决方案
  • 如果您按 F11 几次,此代码将丢失并且无法执行正确的功能。
  • 看起来这实际上是 Google Chrome 的一个错误。我添加了一些日志记录,显然当您进入/退出全屏时,它可以停止正确报告window.outerHeight/Width。见这里:jsbin.com/ciqeb/5/edit
猜你喜欢
  • 2016-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-09-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多