6 votes

Impossible de demander à nouveau le plein écran chrome

J'ai un problème. La demande de plein écran fonctionne bien dans Firefox, mais dans Chrome lorsque je demande et annule le plein écran, je ne peux pas le redemander (F11 fonctionne). De plus, lorsque je recharge la page, le plein écran est annulé.

jQuery('.fullScreen').click(function(){ 
   var docElm = document.documentElement;

   if (docElm.requestFullscreen) {
      docElm.requestFullscreen();
   }

   else if (docElm.mozRequestFullScreen) {
      docElm.mozRequestFullScreen();          
   }

   else if (docElm.webkitRequestFullScreen) {
      docElm.webkitRequestFullScreen(); 
}   
      jQuery('.fullScreen').css({'display' : 'none'});
      jQuery('.minimize').css({'display' : 'block'});
   });

Minimiser :

jQuery('.minimize').click(function(){               

                            if (document.exitFullscreen) {
                            document.exitFullscreen();
                            }

                            else if (document.mozCancelFullScreen) {
                                document.mozCancelFullScreen();
                            }

                            else if (document.webkitCancelFullScreen) {
                                document.webkitCancelFullScreen();
                            }               

                        jQuery('.fullScreen').css({'display' : 'block'});
                        jQuery('.minimize').css({'display' : 'none'});
                });

De plus, lorsque j'appuie sur esc en plein écran, il se réduit, mais je ne peux pas revenir en plein écran en utilisant mon bouton.

1voto

Billybonks Points 661

Ok, quelques idées.

Pour résoudre le problème de rafraîchissement, vous pouvez placer un cookie indiquant si le navigateur est en plein écran ou non et si c'est le cas, vous pouvez le rendre plein écran lors de l'événement page ready.

Voici une démo de l'api plein écran qui peut être copiée et collée.

Je voudrais mettre en évidence un extrait

    fsElement.addEventListener(fullScreenApi.fullScreenEventName, function() {
    if (fullScreenApi.isFullScreen()) {
        fsStatus.innerHTML = 'Whoa, you went fullscreen';
    } else {
        fsStatus.innerHTML = 'Back to normal';
    }
}, true);

Vous pouvez ajouter du code dans cet événement pour gérer le moment où l'utilisateur quitte le mode plein écran et exécuter votre méthode de minimisation.

            <!DOCTYPE html>
            <html>
            <head>
            <title>FullScreen API</title>

            <style>
            body {
                background: #F3F5FA;
            }
            #container {
                width: 600px;
                padding: 30px;
                background: #F8F8F8;
                border: solid 1px #ccc;
                color: #111;
                margin: 20px auto;
                border-radius: 3px;
            }

            #specialstuff {
                background: #33e;
                padding: 20px;
                margin: 20px;
                color: #fff;
            }
            #specialstuff a {
                color: #eee;
            }

            #fsstatus {
                background: #e33;
                color: #111;
            }

            #fsstatus.fullScreenSupported {
                background: #3e3;
            }
            </style>
            </head>
            <body>
            <div id="container">
                <div id="specialstuff">
                    <p>Inside here is special stuff which will go fullscreen</p>
                    <p>As of 10/20/2011, you'll need Safari 5.1, <a href="http://tools.google.com/dlpage/chromesxs">Chrome Canary</a>, or <a href="http://nightly.mozilla.org/">Firefox Nightly</a>
                    <p>Status: <span id="fsstatus"></span>
                </div>

                <input type="button" value="Go Fullscreen" id="fsbutton" />
                <p>
                </p>
            </div>

            <script>

            (function() {
            var 
                fullScreenApi = { 
                    supportsFullScreen: false,
                    isFullScreen: function() { return false; }, 
                    requestFullScreen: function() {}, 
                    cancelFullScreen: function() {},
                    fullScreenEventName: '',
                    prefix: ''
                },
                browserPrefixes = 'webkit moz o ms khtml'.split(' ');

            // check for native support
            if (typeof document.cancelFullScreen != 'undefined') {
                fullScreenApi.supportsFullScreen = true;
            } else {     
                // check for fullscreen support by vendor prefix
                for (var i = 0, il = browserPrefixes.length; i < il; i++ ) {
                    fullScreenApi.prefix = browserPrefixes[i];

                    if (typeof document[fullScreenApi.prefix + 'CancelFullScreen' ] != 'undefined' ) {
                        fullScreenApi.supportsFullScreen = true;

                        break;
                    }
                }
            }

            // update methods to do something useful
            if (fullScreenApi.supportsFullScreen) {
                fullScreenApi.fullScreenEventName = fullScreenApi.prefix + 'fullscreenchange';

                fullScreenApi.isFullScreen = function() {
                    switch (this.prefix) {  
                        case '':
                            return document.fullScreen;
                        case 'webkit':
                            return document.webkitIsFullScreen;
                        default:
                            return document[this.prefix + 'FullScreen'];
                    }
                }
                fullScreenApi.requestFullScreen = function(el) {
                    return (this.prefix === '') ? el.requestFullScreen() : el[this.prefix + 'RequestFullScreen']();
                }
                fullScreenApi.cancelFullScreen = function(el) {
                    return (this.prefix === '') ? document.cancelFullScreen() : document[this.prefix + 'CancelFullScreen']();
                }       
            }

            // jQuery plugin
            if (typeof jQuery != 'undefined') {
                jQuery.fn.requestFullScreen = function() {

                    return this.each(function() {
                        var el = jQuery(this);
                        if (fullScreenApi.supportsFullScreen) {
                            fullScreenApi.requestFullScreen(el);
                        }
                    });
                };
            }

            // export api
            window.fullScreenApi = fullScreenApi;   
            })();

            </script>

            <script>

            // do something interesting with fullscreen support
            var fsButton = document.getElementById('fsbutton'),
            fsElement = document.getElementById('specialstuff'),
            fsStatus = document.getElementById('fsstatus');

            if (window.fullScreenApi.supportsFullScreen) {
            fsStatus.innerHTML = 'YES: Your browser supports FullScreen';
            fsStatus.className = 'fullScreenSupported';

            // handle button click
            fsButton.addEventListener('click', function() {
                window.fullScreenApi.requestFullScreen(fsElement);
            }, true);

            fsElement.addEventListener(fullScreenApi.fullScreenEventName, function() {
                if (fullScreenApi.isFullScreen()) {
                    fsStatus.innerHTML = 'Whoa, you went fullscreen';
                } else {
                    fsStatus.innerHTML = 'Back to normal';
                }
            }, true);

            } else {
            fsStatus.innerHTML = 'SORRY: Your browser does not support FullScreen';
            }

            </script>

            </body>
            </html>

J'ai ci-dessous une version mise à jour de votre jquery

jQuery('.fullScreen').click(function(){ 
    maximize();
});

jQuery('.minimize').click(function(){               
    minimize();
});

function maximize(){
    var docElm = document.documentElement;

    if (docElm.requestFullscreen) {
    docElm.requestFullscreen();
    }

    else if (docElm.mozRequestFullScreen) {
    docElm.mozRequestFullScreen();          
    }

    else if (docElm.webkitRequestFullScreen) {
    docElm.webkitRequestFullScreen(); 
    }   
    jQuery('.fullScreen').css({'display' : 'none'});
    jQuery('.minimize').css({'display' : 'block'});
}

function minimize(){
    if (document.exitFullscreen) {
    document.exitFullscreen();
    }

    else if (document.mozCancelFullScreen) {
    document.mozCancelFullScreen();
    }

    else if (document.webkitCancelFullScreen) {
    document.webkitCancelFullScreen();
    }               

    jQuery('.fullScreen').css({'display' : 'block'});
    jQuery('.minimize').css({'display' : 'none'});
}

une note importante

Événement FullScreenChanged - Le W3C et Webkit déclenchent l'événement fullscreenchanged sur l'élément qui passe en plein écran, mais Mozilla déclenche l'événement sur l'objet document.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X