欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

封装Html5 Fullscreen API

程序员文章站 2022-07-08 12:04:02
使用新的全屏 API,可以将用户的注意力导向特定元素,同时隐藏背景或转移对其他应用的注意力。因为W3C全屏规范还未达到最终版本,所以大多数浏览器供应商都使用唯一标识符为 API 添...
使用新的全屏 API,可以将用户的注意力导向特定元素,同时隐藏背景或转移对其他应用的注意力。因为W3C全屏规范还未达到最终版本,所以大多数浏览器供应商都使用唯一标识符为 API 添加前缀。在本例中,Microsoft 使用ms。最好是有单个函数可以请求所有前缀的全屏模式,类似于此处显示的大部分示例。若要获取更佳性能,请将 W3C API 名称放在第一,其后跟随设置前缀的版本。

 

 

 

进入,退出全屏或是否全屏事件:

 

    // Webkit (works in Safari5.1 and Chrome 15)

    element.webkitRequestFullScreen();

    document.webkitCancelFullScreen();

    测试环境chrome39支持document.webkitExitFullscreen()

    document.webkitIsFullScreen

     

    // Firefox 10+

    element.mozRequestFullScreen();

    document.mozCancelFullScreen();

    document.mozFullScreen

    

    //ie11

    element.msRequestFullscreen();

    document.msExitFullscreen();

     

    // W3C 提议

    element.requestFullscreen();

    document.exitFullscreen();

    document.fullscreen

 

接下来封装代码:

 

 

    !function(w,d){

        var fs={

                supportsFullScreen:false,

                isFullScreen:false,

                requestFullScreen:'',

                exitFullScreen:'',

                fullscreenchange:'',

                prefix:''

            },

            aP=['webkit','moz','ms'],    //opera 15 支持全屏是webkit内核

            len=aP.length,

            i=0;

        

        if(d.exitFullscreen){

            fs.supportsFullScreen=true

        }else{

            for(; i<len; i++){

                if(d[aP[i]+'ExitFullscreen'] || d[aP[i]+'CancelFullScreen']){

                    fs.supportsFullScreen=true;

                    fs.prefix=aP[i];

                    break

                }

            }

        }

        

        if(fs.supportsFullScreen){

            var p=fs.prefix;

            fs.fullscreenchange=function(fn){

                d.addEventListener(p=='ms' ? 'MSFullscreenChange' : p+'fullscreenchange',function(){

                    fn && fn()

                },false)

            };

            fs.fullscreenchange(function(){

                fs.isFullScreen=(function(p){

                    switch (p) {

                        case '':

                            return d.fullscreen;

                        case 'webkit':

                            return d.webkitIsFullScreen;

                        case 'moz':

                            return d.mozFullScreen;

                        case 'ms':

                            return d.msFullscreenElement ? true : false

                    }

                })(p)

            });

            fs.requestFullScreen=function(elem){

                var elem=elem || d.documentElement;

                try{

                    p ? elem[p+'RequestFullScreen']() : elem.requestFullScreen()    //chrome,ff,标准

                }catch(e){

                    elem[p+'RequestFullscreen']()    //elem.msRequestFullscreen

                }

            };

            fs.exitFullScreen=function(){

                try{

                    p ? d[p+'ExitFullscreen']() : d.exitFullscreen()    //ie,新版chrome或标准

                }catch(e){

                    d[p+'CancelFullScreen']()    //老版chrome 火狐

                }

            }

        }

        w.fs=fs

    }(window,document);

 

使用方法:

 

 

<body>

        <p id="launch">进入全屏</p>

</body>

 

    var oBtn=document.getElementById('launch');

    oBtn.onclick=function(){

        if(fs.supportsFullScreen){

            fs.isFullScreen ?

            (fs.exitFullScreen(), this.innerHTML='进入全屏') :

            (fs.requestFullScreen(), this.innerHTML='退出全屏')

        }else{

            alert('Sorry: Your browser does not support fullScreen preview.')

        }

    };

    

    fs.fullscreenchange(function(){

        oBtn.innerHTML = fs.isFullScreen ? '退出全屏' : '进入全屏'

    })