2012-10-22 19 views
5

Ho un problema. La richiesta a schermo intero funziona bene in Firefox, ma in Chrome quando richiedo e cancelli lo schermo intero, non posso richiederlo di nuovo (funziona F11). Inoltre quando ricarico la pagina si cancella a schermo intero.Impossibile richiedere nuovamente lo schermo intero chrome

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'}); 
    }); 

Minimizza:

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'}); 
       }); 

Inoltre, quando si preme esc a schermo intero, è ridurre al minimo, ma non posso tornare a schermo intero usando il mio tasto.

+1

Funziona correttamente nel mio Chrome (v 20). Puoi ottenere maggiori informazioni sulla versione del browser e su come ridurre al minimo l'implementazione (se non esci da F11)? –

+0

Ho aggiunto questa funzione nel primo post. Sto utilizzando Chrome v22.0.1229.94 m. – Ziggy

risposta

1

ok quindi un paio di idee.

in primo luogo il motivo per cui non funziona quando si preme il pulsante di escape. è molto semplicemente perché il tuo jQuery non viene eseguito. per risolvere il problema di aggiornamento puoi inserire un cookie che indica che il browser è a schermo intero oppure no e se lo è puoi renderlo a schermo intero nell'evento pronto per la pagina. vorrei proporre una nuova idea per voi

sotto è completamente copia demo pasteable delle API a schermo intero

Vorrei evidenziare un frammento di

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

è possibile aggiungere codice in questo evento da gestire quando l'utente lascia la modalità a schermo intero. e basta eseguire il minimizzare methhod

  <!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> 

seguito ho una versione aggiornata del 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'}); 
} 

una nota importent

evento FullScreenChanged - Il W3C e Webkit fuoco l'evento fullscreenchanged sull'elemento andando a schermo intero, ma Mozilla fa scattare l'evento sull'oggetto del documento.

+1

La specifica è cambiata. 'webkitCancelFullScreen' è ora' webkitExitFullscreen'. http://generatedcontent.org/post/70347573294/is-your-fullscreen-api-code-up-to-date-find-out-how-to –