2014-09-22 112 views
1

我希望当点击确定框中的“确定”时,整个网页将全屏显示,但是只有这样才会出现错误TypeError: docelem.requestFullscreen is not a function。我尝试了所有但没有...如何使用confirm()更改为全屏显示整个网页?

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

一些解决方案?或者用confirm()不可能?因为用一个按钮工作:

(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 2014-09-22 18:13:05

回答

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中,如身体,按钮等...真的吗? – 2014-09-23 00:25:10

+1

是的,我想.. :)也许你可以使用body元素的“mousemove”事件作为“用户交互”。 – 2014-09-23 11:36:09

+1

https://developer.mozilla.org/en-US/docs/Web/API/Fullscreen_API中MDN中“用户交互”的定义是requestFullscreen()只能在事件处理程序中运行。 – 2016-07-25 20:35:48