Come rendere la finestra a schermo intero con Javascript (che si estende su tutto lo schermo)


253

Come posso fare in modo che il browser di un visitatore passi a schermo intero usando JavaScript, in un modo che funziona con IE, Firefox e Opera?


29
la sua applicazione interiore, non per il pubblico. non ho intenzione di abusare di nessuno
user63898

2
Potresti, pragmaticamente, chiedere all'utente:sprintf('Dear user, the best experience with this site is in fullscreen mode. To view this site full screen, press %s.', _get_browsers_full_Screen_key())
Boldewyn il

6
Sono curioso di sapere come funziona lo schermo intero di YouTube. Qualcuno conosce la risposta?
Kasturi,

6
questo viene fatto dal flash player non dal browser
user63898

5
Per una panoramica dello stato dell'arte guarda qui: hacks.mozilla.org/2012/01/…
loomi,

Risposte:


54

Questo è il più vicino possibile a schermo intero in JavaScript:

<script type="text/javascript">
    window.onload = maxWindow;

    function maxWindow() {
        window.moveTo(0, 0);

        if (document.all) {
            top.window.resizeTo(screen.availWidth, screen.availHeight);
        }

        else if (document.layers || document.getElementById) {
            if (top.window.outerHeight < screen.availHeight || top.window.outerWidth < screen.availWidth) {
                top.window.outerHeight = screen.availHeight;
                top.window.outerWidth = screen.availWidth;
            }
        }
    }
</script> 

guarda il link / risposta accettata nel link haim evgi pubblicato ... non dovresti essere in grado di ridimensionare il browser. Puoi comunque massimizzare all'interno della finestra del browser (questo come l'ho letto)
lexu

4
Dipende dalle impostazioni dell'autorizzazione javascript in Opzioni. È possibile attivare o disattivare il controllo js sulle funzioni della finestra.
Garrow

3
Questo è successo l'ultima volta che un sito ha utilizzato un codice del genere e non l'ho bloccato: dorward.me.uk/tmp/fullscreen.jpeg
Quentin

2
Dai un'occhiata all'API webkit -fullscreen: bleeding-edge-tlv.appspot.com/#28 (da # gdd2011)
Christian Kuetbach

17
QUESTO È VECCHIO. CERCA SOTTO LA SOLUZIONE!
Keavon,

281

Nei browser più recenti come Chrome 15, Firefox 10, Safari 5.1, IE 10 questo è possibile. È anche possibile per IE meno recenti tramite ActiveX a seconda delle impostazioni del browser.

Ecco come farlo:

function requestFullScreen(element) {
    // Supports most browsers and their versions.
    var requestMethod = element.requestFullScreen || element.webkitRequestFullScreen || element.mozRequestFullScreen || element.msRequestFullScreen;

    if (requestMethod) { // Native full screen.
        requestMethod.call(element);
    } else if (typeof window.ActiveXObject !== "undefined") { // Older IE.
        var wscript = new ActiveXObject("WScript.Shell");
        if (wscript !== null) {
            wscript.SendKeys("{F11}");
        }
    }
}

var elem = document.body; // Make the body go full screen.
requestFullScreen(elem);

L'utente ovviamente deve prima accettare la richiesta a schermo intero, e non è possibile attivarla automaticamente al pageload, deve essere attivata da un utente (es. Un pulsante)

Per saperne di più: https://developer.mozilla.org/en/DOM/Using_full-screen_mode


3
Attualmente disponibile in Chrome 15, Firefox 10 e Safari 5.1. Vedi questo post sul blog di hacks.mozilla.org per dettagli sullo stato attuale della situazione.
Simon Lieschke,

10
Fantastico, un modo per uscire dallo schermo intero?
Christopher Chase,

2
Poche cose. In IE questo ovviamente ignorerà l'elemento e tutto lo schermo. Se vuoi che tutto lo schermo passi, tutto document.documentElementciò assicurerà di ottenere l'elemento radice corretto ('html' o 'body'). E usare può usare cancelFullscreen()per chiuderlo (o inviare di nuovo 'F11' per IE).
Matthew Wilcoxson,

6
Può essere attivato solo dall'utente (ad esempio tramite un pulsante a schermo intero). Lo schermo intero automatico durante il caricamento non è possibile.
A. KR

3
errore di ortografia per IE, dovrebbe essere msRequestFullScreen, come nella documentazione msdn.microsoft.com/en-us/library/ie/dn265028(v=vs.85).aspx
danielb

66

Questo codice include anche come abilitare lo schermo intero per Internet Explorer 9, e probabilmente le versioni precedenti, nonché le versioni molto recenti di Google Chrome. La risposta accettata può essere utilizzata anche per altri browser.

var el = document.documentElement
    , rfs = // for newer Webkit and Firefox
           el.requestFullscreen
        || el.webkitRequestFullScreen
        || el.mozRequestFullScreen
        || el.msRequestFullscreen
;
if(typeof rfs!="undefined" && rfs){
  rfs.call(el);
} else if(typeof window.ActiveXObject!="undefined"){
  // for Internet Explorer
  var wscript = new ActiveXObject("WScript.Shell");
  if (wscript!=null) {
     wscript.SendKeys("{F11}");
  }
}

fonti:


Funziona su IE 8 sopra, FF10 sopra (provato in FF 9, non funziona), testato su Chrome 18
Treby

@Peter O. "dovrebbe essere inserito in un gestore eventi", in qualche modo per attivarlo quando viene caricato?
Francis P

@FrancisP: No; né "load" né "DOMContentLoaded" sono un UIEvent o MouseEvent applicabile per l'API a schermo intero.
Peter O.

2
Grazie per "(nota, tuttavia, che requestFullScreen" funziona solo durante "" [m] ost UIEvents e MouseEvents, come clic e keydown, ecc. "," Quindi non può essere utilizzato in modo dannoso ".)"

documentElementè meglio che bodyper me.
Matt,

24

Ecco una soluzione completa per entrare e uscire dalla modalità a schermo intero (ovvero annullare, uscire, uscire)

        function cancelFullScreen(el) {
            var requestMethod = el.cancelFullScreen||el.webkitCancelFullScreen||el.mozCancelFullScreen||el.exitFullscreen;
            if (requestMethod) { // cancel full screen.
                requestMethod.call(el);
            } else if (typeof window.ActiveXObject !== "undefined") { // Older IE.
                var wscript = new ActiveXObject("WScript.Shell");
                if (wscript !== null) {
                    wscript.SendKeys("{F11}");
                }
            }
        }

        function requestFullScreen(el) {
            // Supports most browsers and their versions.
            var requestMethod = el.requestFullScreen || el.webkitRequestFullScreen || el.mozRequestFullScreen || el.msRequestFullscreen;

            if (requestMethod) { // Native full screen.
                requestMethod.call(el);
            } else if (typeof window.ActiveXObject !== "undefined") { // Older IE.
                var wscript = new ActiveXObject("WScript.Shell");
                if (wscript !== null) {
                    wscript.SendKeys("{F11}");
                }
            }
            return false
        }

        function toggleFull() {
            var elem = document.body; // Make the body go full screen.
            var isInFullScreen = (document.fullScreenElement && document.fullScreenElement !== null) ||  (document.mozFullScreen || document.webkitIsFullScreen);

            if (isInFullScreen) {
                cancelFullScreen(document);
            } else {
                requestFullScreen(elem);
            }
            return false;
        }

1
Che dire msIsFullScreen?
Kangax,

1
Le specifiche sono cambiate. webkitCancelFullScreenè adesso webkitExitFullscreen. generatedcontent.org/post/70347573294/…
Doug S,

la prima parte di questa logica e operazione è ridondante e dovrebbe essere rimossadocument.fullScreenElement && document.fullScreenElement !== null
conside Ratio

modificare l' elemin toggleFull()da document.bodya document.documentElementper risolvere sinistra e problema margine destro
Firnas


8

La nuova tecnologia html5 - API a schermo intero ci offre un modo semplice per presentare il contenuto di una pagina Web in modalità a schermo intero. Stiamo per fornirti informazioni dettagliate sulla modalità a schermo intero. Prova a immaginare tutti i possibili vantaggi che puoi ottenere utilizzando questa tecnologia: album di foto a schermo intero, video e persino giochi.

Ma prima di descrivere questa nuova tecnologia, devo notare che questa tecnologia è sperimentale e supportata da tutti i principali browser .

Puoi trovare il tutorial completo qui: http://www.css-jquery-design.com/2013/11/javascript-jquery-fullscreen-browser-window-html5-technology/

Qui funziona Demo: http://demo.web3designs.com/javascript-jquery-fullscreen-browser-window-html5-technology.htm


1
@Ian Funziona in IE Edge. La versione precedente di IE non supporta questo.
Dhiraj,

8

Ho usato questo ...

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>
    <script language="JavaScript">
        function fullScreen(theURL) {
            window.open(theURL, '', 'fullscreen=yes, scrollbars=auto');
        }
        // End -->
    </script>
</head>

<body>
    <h1 style="text-align: center;">
        Open In Full Screen
    </h1>
    <div style="text-align: center;"><br>
        <a href="javascript:void(0);" onclick="fullScreen('http://google.com');">
            Open Full Screen Window
        </a>
    </div>
</body>

</html>

window.open (theURL, '', 'fullscreen = yes', 'scrollbars = auto'); C'è un problema con i genitori su questa linea
Kevin Bowersox,

Questo è dal genitore però. Non utile quando la finestra è già stata aperta.
Christian,

7

Semplice esempio da: http://www.longtailvideo.com/blog/26517/using-the-browsers-new-html5-fullscreen-capabilities/

<script type="text/javascript">
  function goFullscreen(id) {
    // Get the element that we want to take into fullscreen mode
    var element = document.getElementById(id);

    // These function will not exist in the browsers that don't support fullscreen mode yet, 
    // so we'll have to check to see if they're available before calling them.

    if (element.mozRequestFullScreen) {
      // This is how to go into fullscren mode in Firefox
      // Note the "moz" prefix, which is short for Mozilla.
      element.mozRequestFullScreen();
    } else if (element.webkitRequestFullScreen) {
      // This is how to go into fullscreen mode in Chrome and Safari
      // Both of those browsers are based on the Webkit project, hence the same prefix.
      element.webkitRequestFullScreen();
   }
   // Hooray, now we're in fullscreen mode!
  }
</script>

<img class="video_player" src="image.jpg" id="player"></img>
<button onclick="goFullscreen('player'); return false">Click Me To Go Fullscreen! (For real)</button>

6

Crea funzione

function toggleFullScreen() {

            if ((document.fullScreenElement && document.fullScreenElement !== null) ||
                    (!document.mozFullScreen && !document.webkitIsFullScreen)) {
             $scope.topMenuData.showSmall = true;
                if (document.documentElement.requestFullScreen) {
                    document.documentElement.requestFullScreen();
                } else if (document.documentElement.mozRequestFullScreen) {
                    document.documentElement.mozRequestFullScreen();
                } else if (document.documentElement.webkitRequestFullScreen) {
                    document.documentElement.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT);
                }
            } else {

                  $scope.topMenuData.showSmall = false;
                if (document.cancelFullScreen) {
                    document.cancelFullScreen();
                } else if (document.mozCancelFullScreen) {
                    document.mozCancelFullScreen();
                } else if (document.webkitCancelFullScreen) {
                    document.webkitCancelFullScreen();
                }
            }
        }

In HTML Inserisci codice come

<ul class="unstyled-list fg-white">

            <li class="place-right" data-ng-if="!topMenuData.showSmall" data-ng-click="toggleFullScreen()">Full Screen</li>
            <li class="place-right" data-ng-if="topMenuData.showSmall" data-ng-click="toggleFullScreen()">Back</li>
        </ul>

if statement non sembra rilevarlo in modalità a schermo intero in IE 11 (quindi non si chiude).
Ian

3

Ora che le API a schermo intero sono più diffuse e sembrano maturare, perché non provare Screenfull.js ? L'ho usato per la prima volta ieri e oggi la nostra app passa davvero a schermo intero in (quasi) tutti i browser!

Assicurati di accoppiarlo con la :fullscreenpseudo-classe in CSS. Vedi https://www.sitepoint.com/use-html5-full-screen-api/ per ulteriori informazioni.


Piccola sceneggiatura incredibile. Usandolo sul mio sito web ora su www.StarCommanderOnline.com. Grazie!
Andy,

3

Fortunatamente per gli utenti web ignari questo non può essere fatto solo con JavaScript. Dovresti scrivere plugin specifici per browser, se non esistevano già, e in qualche modo convincere le persone a scaricarli. La più vicina che puoi ottenere è una finestra ingrandita senza strumenti o barre di navigazione, ma gli utenti saranno comunque in grado di vedere l'URL.

window.open('http://www.web-page.com', 'title' , 'type=fullWindow, fullscreen, scrollbars=yes');">

Questa è generalmente considerata una cattiva pratica, poiché rimuove molte funzionalità del browser dall'utente.


3

Prova screenfull.js . È una bella soluzione cross-browser che dovrebbe funzionare anche con il browser Opera.

Semplice wrapper per l'utilizzo su più browser dell'API JavaScript a schermo intero, che consente di portare la pagina o qualsiasi elemento a schermo intero. Appianare le differenze di implementazione del browser, quindi non è necessario.

Demo .


2

Questo può supportare

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default5.aspx.cs" Inherits="PRODUCTION_Default5" %>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title>Untitled Page</title>
        <script type="text/javascript">
            function max()
            {
               window.open("", "_self", "fullscreen=yes, scrollbars=auto"); 
            }
        </script>
    </head>
    <body onload="max()">
        <form id="form1" runat="server">
        <div>
        This is Test Page
        </div>
        </form>
    </body>
    </html>

2

Puoi provare:

<script type="text/javascript">
    function go_full_screen(){
      var elem = document.documentElement;
      if (elem.requestFullscreen) {
        elem.requestFullscreen();
      } else if (elem.msRequestFullscreen) {
        elem.msRequestFullscreen();
      } else if (elem.mozRequestFullScreen) {
        elem.mozRequestFullScreen();
      } else if (elem.webkitRequestFullscreen) {
        elem.webkitRequestFullscreen();
      }
    }
</script>

<a href="#" onClick="go_full_screen();">Full Screen / Compress Screen</a>


Sembra fallire per me in Chrome 76 su Ubuntu
Jonathan il

1

Prova questo script

<script language="JavaScript">
function fullScreen(theURL) {
window.open(theURL, '', 'fullscreen=yes, scrollbars=auto' );
}
</script>

Per chiamare dallo script usa questo codice,

window.fullScreen('fullscreen.jsp');

o con hyperlink usa questo

<a href="javascript:void(0);" onclick="fullScreen('fullscreen.jsp');"> 
Open in Full Screen Window</a>

1

In Firefox 10, puoi rendere la pagina corrente a schermo intero (schermo intero reale senza finestra cromata) usando questo javascript:

window.fullScreen = true;

1
Il termine "supposto di" è così sovraccarico di software. In alcuni browser è di sola lettura. Firefox 10 ti consente di impostarlo.
Leopd,

1

Questo funzionerà per mostrare la tua finestra a schermo intero

Nota: affinché funzioni, è necessario eseguire una query da http://code.jquery.com/jquery-2.1.1.min.js

O fai avere un collegamento javascript come questo.

<script src="http://code.jquery.com/jquery-2.1.1.min.js"></script>

   <div id="demo-element">
        <span>Full Screen Mode Disabled</span>
        <button id="go-button">Enable Full Screen</button>
    </div>
    <script>
    function GoInFullscreen(element) {
        if(element.requestFullscreen)
            element.requestFullscreen();
        else if(element.mozRequestFullScreen)
            element.mozRequestFullScreen();
        else if(element.webkitRequestFullscreen)
            element.webkitRequestFullscreen();
        else if(element.msRequestFullscreen)
            element.msRequestFullscreen();
    }

    function GoOutFullscreen() {
        if(document.exitFullscreen)
            document.exitFullscreen();
        else if(document.mozCancelFullScreen)
            document.mozCancelFullScreen();
        else if(document.webkitExitFullscreen)
            document.webkitExitFullscreen();
        else if(document.msExitFullscreen)
            document.msExitFullscreen();
    }

    function IsFullScreenCurrently() {
        var full_screen_element = document.fullscreenElement || document.webkitFullscreenElement || document.mozFullScreenElement || document.msFullscreenElement || null;

        if(full_screen_element === null)
            return false;
        else
            return true;
    }

    $("#go-button").on('click', function() {
        if(IsFullScreenCurrently())
            GoOutFullscreen();
        else
            GoInFullscreen($("#demo-element").get(0));
    });

    $(document).on('fullscreenchange webkitfullscreenchange mozfullscreenchange MSFullscreenChange', function() {
        if(IsFullScreenCurrently()) {
            $("#demo-element span").text('Full Screen Mode Enabled');
            $("#go-button").text('Disable Full Screen');
        }
        else {
            $("#demo-element span").text('Full Screen Mode Disabled');
            $("#go-button").text('Enable Full Screen');
        }
    });</script>

0

Un modo di domande e risposte per passare a schermo intero, se ti trovi in ​​una situazione di "chiosco", è quello di alimentare un F11 nella finestra del browser dopo che è attivo e funzionante. Questo non è abbastanza avvincente e l'utente potrebbe essere in grado di colpire un touchscreen nella parte superiore e ottenere una vista semi-a schermo intero, ma alimentare l'F11 potrebbe fare un pizzico o semplicemente per iniziare un progetto.


0

Ecco la mia soluzione completa per Full Screened Exit Full Screenentrambi (molte grazie per l'aiuto dalla risposta della torre sopra):

$(document).ready(function(){
$.is_fs = false;
$.requestFullScreen = function(calr)
{
    var element = document.body;

    // Supports most browsers and their versions.
    var requestMethod = element.requestFullScreen || element.webkitRequestFullScreen || element.mozRequestFullScreen || element.msRequestFullScreen;

    if (requestMethod) { // Native full screen.
        requestMethod.call(element);
    } else if (typeof window.ActiveXObject !== "undefined") { // Older IE.
        var wscript = new ActiveXObject("WScript.Shell");
        if (wscript !== null) {
            wscript.SendKeys("{F11}");
        }
    }

    $.is_fs = true;    
    $(calr).val('Exit Full Screen');
}

$.cancel_fs = function(calr)
{
    var element = document; //and NOT document.body!!
    var requestMethod = element.exitFullScreen || element.mozCancelFullScreen || element.webkitExitFullScreen || element.mozExitFullScreen || element.msExitFullScreen || element.webkitCancelFullScreen;

    if (requestMethod) { // Native full screen.
    requestMethod.call(element);
    } else if (typeof window.ActiveXObject !== "undefined") { // Older IE.
        var wscript = new ActiveXObject("WScript.Shell");
        if (wscript !== null) {
            wscript.SendKeys("{F11}");
        }
    }    

    $(calr).val('Full Screen');    
    $.is_fs = false;
}

$.toggleFS = function(calr)
{    
    $.is_fs == true? $.cancel_fs(calr):$.requestFullScreen(calr);
}

});

// CHIAMATE:

<input type="button" value="Full Screen" onclick="$.toggleFS(this);" />
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.