我们如何在javascript中以编程方式进入和退出全屏模式?

我们如何在javascript中以编程方式进入和退出全屏模式?,javascript,browser,fullscreen,Javascript,Browser,Fullscreen,我使用了我学到的代码使浏览器全屏显示(它可以工作),但是我试图修改它的一个版本以退出全屏显示失败。处理这些非标准API有点棘手,每个浏览器的实现方式都有点不同 代码如下: // Bring the page into full-screen mode - Works! function requestFullScreen(element) { // Supports most browsers and their versions. var requestMethod = el

我使用了我学到的代码使浏览器全屏显示(它可以工作),但是我试图修改它的一个版本以退出全屏显示失败。处理这些非标准API有点棘手,每个浏览器的实现方式都有点不同

代码如下:

// Bring the page into full-screen mode - Works!
function requestFullScreen(element) {

    // Supports most browsers and their versions.
    var requestMethod = element.requestFullScreen || 
        element.webkitRequestFullScreen           || 
        element.mozRequestFullScreen              || 
        element.msRequestFullScreen;
    if (requestMethod) {
        requestMethod.call(element);
    } else if ( typeof window.ActiveXObject !== "undefined") {
        var wscript = new ActiveXObject("WScript.Shell");
        if (wscript !== null) {
            wscript.SendKeys("{F11}");
        }
    }
}

// Exit fullscreen - Doesn't work!
function exitFullScreen(element){
    var requestMethod = element.exitFullscreen || 
        element.mozCancelFullScreen            || 
        element.webkitExitFullscreen           || 
        element.msExitFullscreen;
    if (requestMethod) {
        requestMethod();
    } else {
        console.log("Oops. Request method false.");
    }
}
电话:

var $fullscreenButton = $("#fullscreen-button");
var $smallscreenButton = $("#smallscreen-button");

$fullscreenButton.on("click", function() {
    var elem = document.body;

    // Make the body go full screen.
    requestFullScreen(elem);
});

$smallscreenButton.on("click", function() {
    var elem = document.body;

    // Exit full screen.
    exitFullScreen(elem);
});
exitFullScreen函数有什么问题?我怎样才能修好它

编辑:

  • 我正在为此开发一个JSFIDLE
  • “不工作”,我的意思是它输出
    “Oops.Request方法false。”
  • 我正在使用参数
    document.body
    调用函数
    exitFullScreen()
JSFiddle:


虽然全屏请求功能在浏览器中正常工作,但我不确定这是因为我自己的错误,还是与JSFIDLE有关。

对于进入全屏,大小写有一些问题

对于退出,您需要在
文档
上调用它,而不是在
正文
上调用它,并且您还需要正确地应用它,而不是调用对方法的引用

so
requestMethod.call(元素)也用于退出

请参见

(在最新的IE/Chrome/FireFox上测试)

也许有人会评论为什么投票失败?现在几乎不可能在Stackoverflow上提问,这里的每个人都疯狂地投票,不建议改进,只攻击任何不完美、不普遍或。。。不管你们这些人在这里找什么。在其他Stack Exchange社区中,如此多的问题获得了投票和良好的反馈。在这里,整个系统就像下了地狱。很多人的反应都是消极的。。只是我的观察:)@MatthewLock不,你错了。工作示例适用于Code Review.SE-堆栈溢出适用于不工作的代码。这段代码很容易验证,已经简化为我的精确问题,并且完全是直截了当的。您在控制台中遇到错误了吗?您遇到了什么浏览器的问题?我相信@MatthewLock想要的是,但事实并非如此。这不是必需的,但肯定有帮助;用户可以出于任何理由否决投票,这样他们就不会被捆绑在一起。我也不会因为选票太低而产生太多泡沫,这只是白费力气。@WebDeveloper404,“不起作用”并没有多大帮助。。什么不起作用?你有错误吗?你有自己的控制台吗?记录信息?你怎么称呼这些方法?你在传递什么论据?哪些浏览器会出现问题?这些问题中的每一个都可能是失败的原因。@gabykag.Petrioli我已经在问题中添加了这些细节。感谢您提出的改进建议!可能有点讽刺的是,OP对问题的“平淡无奇”感到非常悲伤,但你的回答只是在仔细查看突发帧的来源时完整地展示了解决方案。你能解释一下为什么需要
.call()
?由于这些方法已经附加到元素(
element.msExitFullscreen
),我不明白为什么
requestMethod()
不够。@WebDeveloper404,因为如果调用它的引用,执行函数具有不同的上下文。作为参考,fiddle由于这个问题(从Firefox的控制台)无法工作:“全屏显示请求被拒绝,因为包含iFrame的文档中至少有一个没有“allowfullscreen”属性。因此,由于小提琴在iFrame中,因此它不起作用。”。