วิธีทำให้หน้าต่างเต็มหน้าจอด้วย Javascript (ขยายไปทั่วหน้าจอ)


253

ฉันจะทำให้เบราว์เซอร์ของผู้เยี่ยมชมเต็มหน้าจอโดยใช้ JavaScript ในลักษณะที่ทำงานร่วมกับ IE, Firefox และ Opera ได้อย่างไร


29
แอปพลิเคชันภายในไม่ใช่สำหรับสาธารณะ ฉันจะไม่ละเมิดผู้ใด
user63898

2
ในทางปฏิบัติคุณอาจถามผู้ใช้อย่างจริงจัง: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

6
ฉันอยากรู้ว่า youtube แบบเต็มหน้าจอทำงานอย่างไร ใครรู้คำตอบ?
Kasturi

6
สิ่งนี้ทำโดยผู้เล่นแฟลชไม่ใช่เบราว์เซอร์
63898

5
สำหรับภาพรวมสถานะของศิลปะดูที่นี่: hacks.mozilla.org/2012/01/..
loomi

คำตอบ:


54

สิ่งนี้ใกล้เคียงกับที่คุณจะได้รับแบบเต็มหน้าจอใน 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> 

ดูลิงค์ / คำตอบที่ยอมรับได้ในลิงค์ haim evgi ที่โพสต์ ... คุณไม่ควรที่จะปรับขนาดเบราว์เซอร์ แต่คุณสามารถเพิ่มภายในหน้าต่างเบราว์เซอร์ (ว่าวิธีการที่ฉันอ่านมัน)
lexu

4
ขึ้นอยู่กับการตั้งค่าการอนุญาตจาวาสคริปต์ในตัวเลือก คุณสามารถสลับ js เพื่อควบคุมคุณสมบัติของหน้าต่าง
garrow

3
เรื่องนี้เกิดขึ้นครั้งสุดท้ายที่เว็บไซต์ที่ใช้รหัสเช่นนั้นและผมไม่ได้ปิดกั้นมัน: dorward.me.uk/tmp/fullscreen.jpeg
เควนติน

2
ดูที่ webkit-fullscreen API: bleeding-edge-tlv.appspot.com/#28 (จาก # gdd2011)
Christian Kuetbach

17
นี่คือเก่า มองหาทางแก้ไข!
Keavon

281

ในเบราว์เซอร์ที่ใหม่กว่าเช่น Chrome 15, Firefox 10, Safari 5.1, IE 10 สิ่งนี้เป็นไปได้ นอกจากนี้ยังเป็นไปได้สำหรับ IE ที่เก่ากว่าผ่าน ActiveX ขึ้นอยู่กับการตั้งค่าเบราว์เซอร์

นี่คือวิธีการ:

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

ผู้ใช้จำเป็นต้องยอมรับคำขอเต็มหน้าจอก่อนและไม่สามารถทริกเกอร์สิ่งนี้ได้โดยอัตโนมัติใน pageload มันจะต้องถูกทริกเกอร์โดยผู้ใช้ (เช่นปุ่ม)

อ่านเพิ่มเติม: https://developer.mozilla.org/en/DOM/Using_full-screen_mode


3
ขณะนี้มีให้บริการใน Chrome 15, Firefox 10 และ Safari 5.1 ดูโพสต์บล็อก hacks.mozilla.orgนี้สำหรับรายละเอียดเกี่ยวกับสถานะการเล่นปัจจุบัน
Simon Lieschke

10
ยอดเยี่ยมมีวิธีใดบ้างที่จะออกจากเต็มหน้าจอ
Christopher Chase

2
บางสิ่ง. ใน IE นี้จะไม่สนใจองค์ประกอบและเต็มหน้าจอทุกอย่าง หากคุณต้องการที่จะแสดงเต็มหน้าจอทุกอย่างdocument.documentElementจะช่วยให้แน่ใจว่าคุณได้รับองค์ประกอบรากที่ถูกต้อง ('html' หรือ 'body') และใช้สามารถใช้cancelFullscreen()เพื่อปิด (หรือส่ง 'F11' อีกครั้งสำหรับ IE)
Matthew Wilcoxson

6
ผู้ใช้สามารถทริกเกอร์ได้เท่านั้น (เช่นผ่านปุ่มเต็มหน้าจอ) ไม่สามารถแสดงเต็มหน้าจออัตโนมัติระหว่างการโหลดได้
A. KR

3
ข้อผิดพลาดการสะกดสำหรับ IE ควรเป็น msRequestFullScreen เช่นเดียวกับในเอกสารmsdn.microsoft.com/en-us/library/ie/dn265028(v=vs.85).aspx
DanielB

66

รหัสนี้ยังรวมถึงวิธีเปิดใช้งานเต็มหน้าจอสำหรับ Internet Explorer 9 และอาจเป็นรุ่นที่เก่ากว่ารวมถึง Google Chrome เวอร์ชันล่าสุด อาจใช้คำตอบที่ยอมรับได้สำหรับเบราว์เซอร์อื่น

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

แหล่งที่มา:


ใช้งานได้บน IE 8 ด้านบน, FF10 ด้านบน (ทดลองใช้ใน FF 9, มันไม่ทำงาน), ทดสอบบน Chrome 18
Treby

@ ปีเตอร์โอ. "ควรวางไว้ในตัวจัดการเหตุการณ์" วิธีใดที่จะทริกเกอร์มัน onload?
ฟรานซิสพี

@FrancisP: ไม่; ไม่ใช่ "load" หรือ "DOMContentLoaded" เป็น UIEvent หรือ MouseEvent ที่ใช้งานได้สำหรับ Fullscreen API
Peter O.

2
ขอบคุณสำหรับ "(โปรดทราบว่าคำขอเต็มหน้าจอ" จะทำงานเฉพาะในช่วง "" [m] ost UIEvents และ MouseEvents เช่นการคลิกและการกดแป้นพิมพ์ ฯลฯ "," ดังนั้นจึงไม่สามารถใช้งานโดยเจตนาร้าย ".)"

ใช่documentElementดีกว่าbodyสำหรับฉัน
Matt

24

นี่คือโซลูชันที่สมบูรณ์สำหรับการเข้าและออกจากโหมดเต็มหน้าจอ (aka ยกเลิก, ออก, หลบหนี)

        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
เกี่ยวกับmsIsFullScreenอะไร
kangax

1
ข้อมูลจำเพาะมีการเปลี่ยนแปลง อยู่ในขณะนี้webkitCancelFullScreen createdcontent.org/post/70347573294/…webkitExitFullscreen
Doug S

ส่วนแรกของตรรกะและการดำเนินการนี้ซ้ำซ้อนและควรถูกลบdocument.fullScreenElement && document.fullScreenElement !== null
consideRatio

เปลี่ยนelemในtoggleFull()จากdocument.bodyการdocument.documentElementแก้ไขปัญหาทางซ้ายและขอบขวา
Firnas

11

คุณสามารถใช้API แบบเต็มหน้าจอ คุณสามารถดูตัวอย่างได้ที่นี่

API แบบเต็มหน้าจอเป็นวิธีที่ง่ายสำหรับการนำเสนอเนื้อหาเว็บโดยใช้หน้าจอทั้งหมดของผู้ใช้ บทความนี้ให้ข้อมูลเกี่ยวกับการใช้ API นี้


8

เทคโนโลยี html5 ใหม่ - fullscreen API ช่วยให้เราสามารถนำเสนอเนื้อหาของหน้าเว็บในโหมดเต็มหน้าจอได้อย่างง่ายดาย เรากำลังจะให้ข้อมูลรายละเอียดเกี่ยวกับโหมดเต็มหน้าจอ ลองจินตนาการถึงข้อดีที่เป็นไปได้ทั้งหมดที่คุณสามารถใช้เทคโนโลยีนี้ได้ - อัลบั้มรูปภาพแบบเต็มหน้าจอวิดีโอและแม้แต่เกม

แต่ก่อนที่เราจะอธิบายเทคโนโลยีใหม่นี้ผมต้องทราบว่าเทคโนโลยีนี้คือการทดลองและการสนับสนุนจากเบราว์เซอร์ที่สำคัญทั้งหมด

คุณสามารถค้นหาบทแนะนำฉบับสมบูรณ์ได้ที่นี่: http://www.css-jquery-design.com/2013/11/javascript-jquery-fullscreen-browser-window-html5-technology/

นี่คือตัวอย่างการใช้งาน: http://demo.web3designs.com/javascript-jquery-fullscreen-browser-window-html5-technology.htm


1
@Ian มันทำงานใน IE edge IE เวอร์ชันเก่ากว่านี้ไม่รองรับ
Dhiraj

8

ฉันเคยใช้สิ่งนี้ ...

<!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 = ใช่', 'scrollbars = auto'); มีปัญหา parens ในบรรทัดนี้
Kevin Bowersox

นั่นมาจากพ่อแม่ ไม่เป็นประโยชน์เมื่อเปิดหน้าต่างไปแล้ว
Christian

7

ตัวอย่างง่ายๆจาก: 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

สร้างฟังก์ชั่น

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

ใน Html Put Code เช่น

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

หากคำสั่งดูเหมือนจะไม่ตรวจพบว่าในโหมดเต็มหน้าจอใน IE 11 (ดังนั้นอย่าปิด)
Ian

3

ตอนนี้ API แบบเต็มหน้าจอแพร่หลายขึ้นและดูเหมือนว่ากำลังจะสุกแล้วทำไมไม่ลองใช้Screenfull.js ? ฉันใช้มันเป็นครั้งแรกเมื่อวานนี้และวันนี้แอพของเราเต็มหน้าจอในเกือบทุกเบราว์เซอร์!

อย่าลืมจับคู่กับ:fullscreenคลาสหลอกใน CSS ดูhttps://www.sitepoint.com/use-html5-full-screen-api/สำหรับข้อมูลเพิ่มเติม


สคริปต์น้อยน่าอัศจรรย์ ใช้งานบนเว็บไซต์ของฉันตอนนี้ที่ www.StarCommanderOnline.com ขอบคุณ!
Andy

3

โชคดีสำหรับผู้ใช้เว็บที่ไม่สงสัยนี้ไม่สามารถทำได้ด้วยเพียงแค่จาวาสคริปต์ คุณจะต้องเขียนปลั๊กอินเฉพาะของเบราว์เซอร์หากยังไม่มีอยู่จากนั้นจึงทำให้คนอื่นดาวน์โหลดได้ สิ่งที่ใกล้เคียงที่สุดที่คุณจะได้รับคือหน้าต่างขยายใหญ่สุดโดยไม่มีเครื่องมือหรือแถบนำทาง แต่ผู้ใช้จะยังสามารถดู URL ได้

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

โดยทั่วไปถือว่าเป็นการปฏิบัติที่ไม่ดีแม้ว่าจะลบการทำงานของเบราว์เซอร์จำนวนมากออกจากผู้ใช้


3

ลองscreenfull.js มันเป็นโซลูชันข้ามเบราว์เซอร์ที่ดีที่ควรใช้กับเบราว์เซอร์ Opera เช่นกัน

wrapper ง่าย ๆ สำหรับการใช้งานข้ามเบราว์เซอร์ของ JavaScript Fullscreen API ซึ่งช่วยให้คุณสามารถนำหน้าหรือองค์ประกอบใด ๆ มาสู่แบบเต็มหน้าจอ ทำให้ความแตกต่างในการติดตั้งเบราว์เซอร์ราบรื่นยิ่งขึ้นคุณจึงไม่ต้องทำ

การสาธิต


2

สิ่งนี้อาจรองรับ

<%@ 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

คุณลองได้ไหม:

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


ดูเหมือนว่าจะล้มเหลวสำหรับฉันใน Chrome 76 บน Ubuntu
Jonathan

1

ลองใช้สคริปต์นี้

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

สำหรับการโทรจากสคริปต์ใช้รหัสนี้

window.fullScreen('fullscreen.jsp');

หรือด้วยไฮเปอร์ลิงก์ใช้สิ่งนี้

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

1

ใน Firefox 10 คุณสามารถทำให้หน้าปัจจุบันเป็นแบบเต็มหน้าจอ (จริงแบบเต็มหน้าจอโดยไม่มีหน้าต่างโครเมี่ยม) โดยใช้จาวาสคริปต์นี้:

window.fullScreen = true;

1
คำว่า "ควรจะ" มีการใช้งานมากเกินไปในซอฟต์แวร์ ในบางเบราว์เซอร์มันเป็นแบบอ่านอย่างเดียว Firefox 10 ช่วยให้คุณตั้งค่าได้
Leopd

1

การทำงานนี้จะแสดงหน้าต่างของคุณแบบเต็มหน้าจอ

บันทึก: เพื่อให้สิ่งนี้ใช้งานได้คุณต้องมี Query จากhttp://code.jquery.com/jquery-2.1.1.min.js

หรือทำให้มีลิงค์จาวาสคริปต์เช่นนี้

<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

วิธีถามตอบแบบเต็มหน้าจอหากคุณอยู่ในสถานการณ์ "คีออสก์" คือการป้อน F11 ไปที่หน้าต่างเบราว์เซอร์หลังจากเปิดใช้งานแล้ว นี่ไม่ได้เป็นการเริ่มต้นที่ดีนักและผู้ใช้สามารถกระตุ้นหน้าจอสัมผัสที่ด้านบนและรับมุมมองแบบเต็มหน้าจอได้ แต่การป้อน F11 อาจทำได้ด้วยการเหน็บแนมหรือเพื่อเริ่มโครงการ


0

นี่คือวิธีการแก้ปัญหาอย่างเต็มรูปแบบของฉันสำหรับFull ScreenและExit Full Screenทั้งสอง (ขอบคุณมากที่ได้รับความช่วยเหลือจากคำตอบของหอคอยสูงกว่า):

$(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);
}

});

// การโทร:

<input type="button" value="Full Screen" onclick="$.toggleFS(this);" />
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.