HTML 5 全屏站点在内部链接上退出全屏模式

标签 html

我正在使用 HTML 5 构建网站,并希望有一个全屏选项。我已经使用下面的代码让它工作了,但是当你点击一个内部链接时它会退出全屏模式。这是相当不希望的。我进行了广泛的搜索,但没有看到这个问题的任何答案,只有与 iOS 的 webapps 有关的问题,而这不是。演示站点在这里:http://kvrm.co.uk/jw/

我还注意到,在 Firefox 中全屏显示时,屏幕底部会出现一条黑带,这在 Chrome 或 Safari 中不会发生。

如何在导航到其他内部页面时让网站保持全屏模式? (还有,Firefox 的黑条有什么办法吗?)

全屏代码如下:

(function () {
var viewFullScreen = document.getElementById("view-fullscreen");
if (viewFullScreen) {
    viewFullScreen.addEventListener("click", function () {
        var docElm = document.documentElement;
        if (docElm.requestFullscreen) {
            docElm.requestFullscreen();
        }
        else if (docElm.mozRequestFullScreen) {
            docElm.mozRequestFullScreen();
        }
        else if (docElm.webkitRequestFullScreen) {
            docElm.webkitRequestFullScreen();
        }
    }, false);
}

var cancelFullScreen = document.getElementById("cancel-fullscreen");
if (cancelFullScreen) {
    cancelFullScreen.addEventListener("click", function () {
        if (document.exitFullscreen) {
            document.exitFullscreen();
        }
        else if (document.mozCancelFullScreen) {
            document.mozCancelFullScreen();
        }
        else if (document.webkitCancelFullScreen) {
            document.webkitCancelFullScreen();
        }
    }, false);
}


var fullscreenState = document.getElementById("fullscreen-state");
if (fullscreenState) {
    document.addEventListener("fullscreenchange", function () {
        fullscreenState.innerHTML = (document.fullscreen)? "" : "not ";
    }, false);

    document.addEventListener("mozfullscreenchange", function () {
        fullscreenState.innerHTML = (document.mozFullScreen)? "" : "not ";
    }, false);

    document.addEventListener("webkitfullscreenchange", function () {
        fullscreenState.innerHTML = (document.webkitIsFullScreen)? "" : "not ";
    }, false);
}

var marioVideo = document.getElementById("mario-video")
    videoFullscreen = document.getElementById("video-fullscreen");

if (marioVideo && videoFullscreen) {
    videoFullscreen.addEventListener("click", function (evt) {
        if (marioVideo.requestFullscreen) {
            marioVideo.requestFullscreen();
        }
        else if (marioVideo.mozRequestFullScreen) {
            marioVideo.mozRequestFullScreen();
        }
        else if (marioVideo.webkitRequestFullScreen) {
            marioVideo.webkitRequestFullScreen();
            /*
                *Kept here for reference: keyboard support in full screen
                * marioVideo.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT);
            */
        }
    }, false);
}

})();

最佳答案

使用 iframe。外部页面仅包含切换全屏按钮和一个大的 iframe,它填充屏幕的其余部分并包含您的真实内容。您的布局在切换按钮左侧已经有一个空白空间,因此您甚至不必更改布局。

在 iframe 内导航,甚至到其他域,都不会破坏外部框架上的全屏模式。

您需要小心调整 iframe 的大小,这样外框上就没有滚动条了。

关于HTML 5 全屏站点在内部链接上退出全屏模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12841018/

相关文章:

javascript - 如何在 Javascript 中读取 CSV 文件

javascript - 砌体无法加载...元素不会重新对齐,直到我调整窗口大小

html - CSS 导航栏不应该离开行和相关文本

javascript - 在表格中的 div 上叠加图像

javascript - CanvasJS 中的不间断空格

javascript - 更改类 javascript 中每个元素的文本

html - IE7 向右浮动 bug——通常的解决方案不起作用

javascript - 通过添加所选日期来更新文本区域

html - 悬停在图像 map 上不改变光标交IE

html - 导航栏和标签 <ul> <li>