JS 中的短路在第一个输入时停止

Short circuit in JS stopping on first input

我在尝试在我制作的网页上使用短路时遇到了一些问题。

我正在尝试使用

document.webkitExitFullscreen() || document.mozCancelFullScreen() || document.exitFullScreen();

但它似乎在第一次尝试时就停止了,尽管我希望它会在第一个参数出现未定义后继续。

如果我简单地输入

document.mozCancelFullScreen()

然后它工作正常

我想知道是否有人可以指出我在这里做错了什么 顺便说一下,屏幕截图是在 firefox 中拍摄的。 提前致谢

您的代码正在尝试 调用 document.webkitExitFullscreen,如果它 returns 是一个虚假值,调用 document.mozCancelFullScreen,等等

但是,如果 document.webkitExitFullscreen 本身是 undefined,您将在尝试调用它时遇到错误,代码将在该点停止 运行。

也许:

var exitFullScreen = document.webkitExitFullscreen || document.mozCancelFullScreen || document.exitFullScreen;
if (exitFullScreen) {
    exitFullScreen.call(document); // Just `exitFullScreen();` may work as well
}

或者:

["webkitExitFullscreen", "mozCancelFullScreen", "exitFullScreen"].some(function(name) {
    if (document[name]) {
        document[name]();
        return true;
    }
});

...这避免了整个 "do I need call or not?" 问题。

问题是您已经在调用该函数,因此如果它不存在,您将收到错误消息。 你可以尝试类似的东西:

(document.webkitExitFullscreen || document.mozCancelFullScreen || document.exitFullScreen)();