Cách làm cho cửa sổ toàn màn hình bằng Javascript (trải dài trên toàn màn hình)


253

Làm cách nào tôi có thể làm cho trình duyệt của khách truy cập toàn màn hình bằng JavaScript, theo cách hoạt động với IE, Firefox và Opera?


29
ứng dụng bên trong của nó, không dành cho công chúng. tôi sẽ không lạm dụng bất kỳ ai
user63898

2
Thực tế, bạn có thể hỏi người dùng: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
Tôi tò mò làm thế nào toàn màn hình youtube hoạt động. Có ai biết câu trả lời không?
Kasturi

6
điều này được thực hiện bởi trình phát flash không phải trình duyệt
user63898

5
Đối với một trạng thái của cái nhìn tổng quan về nghệ thuật ở đây: hacks.mozilla.org/2012/01/...
loomi

Câu trả lời:


54

Đây là gần như bạn có thể đến toàn màn hình trong 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> 

nhìn vào liên kết / câu trả lời được chấp nhận trong liên kết haim evgi đã đăng ... bạn không cần phải thay đổi kích thước trình duyệt. Tuy nhiên, bạn có thể tối đa hóa trong cửa sổ trình duyệt (đó là cách tôi đọc nó)
lexu

4
Phụ thuộc vào cài đặt quyền javascript của bạn trong Tùy chọn. Bạn có thể chuyển đổi điều khiển js trên các tính năng của cửa sổ.
garrow

3
Điều này đã xảy ra lần trước khi một trang web sử dụng mã như vậy và tôi đã không chặn nó: dorward.me.uk/tmp/fullscreen.jpeg
Quentin

2
Hãy nhìn vào các API webkit-fullscreen: bleeding-edge-tlv.appspot.com/#28 (từ # gdd2011)
Christian Kuetbach

17
ĐIỀU NÀY LÀ CŨ. XEM DƯỚI ĐÂY GIẢI PHÁP!
Keavon

281

Trong các trình duyệt mới hơn như Chrome 15, Firefox 10, Safari 5.1, IE 10, điều này là có thể. Cũng có thể cho các IE cũ hơn thông qua ActiveX tùy thuộc vào cài đặt trình duyệt của họ.

Đây là cách thực hiện:

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

Người dùng rõ ràng cần phải chấp nhận yêu cầu toàn màn hình trước và không thể tự động kích hoạt yêu cầu này khi tải trang, nó cần được kích hoạt bởi người dùng (ví dụ: một nút)

Đọc thêm: https://developer.mozilla.org/en/DOM/Using_full-screen_mode


3
Hiện có sẵn trong Chrome 15, Firefox 10 và Safari 5.1. Xem bài đăng trên blog hacks.mozilla.org này để biết chi tiết về trạng thái chơi hiện tại.
Simon Lieschke 2/212

10
Tuyệt vời, có cách nào để thoát khỏi toàn màn hình?
Christopher Chase

2
Một vài thứ. Trong IE điều này rõ ràng sẽ bỏ qua các yếu tố và toàn màn hình mọi thứ. Nếu bạn muốn toàn màn hình, mọi thứ document.documentElementsẽ được đảm bảo rằng bạn sẽ có được phần tử gốc chính xác ('html' hoặc 'body'). Và sử dụng có thể sử dụng cancelFullscreen()để đóng nó (hoặc gửi lại 'F11' cho IE).
Matthew Wilcoxson

6
Nó chỉ có thể được kích hoạt bởi người dùng (ví dụ thông qua nút toàn màn hình). Toàn màn hình tự động trong khi tải là không thể.
A. KR

3
lỗi chính tả cho IE, nên là msRequestFullScreen, như trong tài liệu msdn.microsoft.com/en-us/l
Library / i / dn265028 (v = vs85) .aspx

66

Mã này cũng bao gồm cách bật toàn màn hình cho Internet Explorer 9 và có thể là các phiên bản cũ hơn, cũng như các phiên bản Google Chrome gần đây. Câu trả lời được chấp nhận cũng có thể được sử dụng cho các trình duyệt khác.

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

Nguồn:


Hoạt động trên IE 8 ở trên, FF10 ở trên (đã thử trong FF 9, nó không hoạt động), đã thử nghiệm trên Chrome 18
Treby

@Peter O. "nên được đặt trong một trình xử lý sự kiện", có cách nào để kích hoạt nó không?
Phanxicô P

@FrancisP: Không; không "tải" hay "DOMContentLoaded" là UIEvent hoặc MouseEvent có thể áp dụng cho API toàn màn hình.
Peter O.

2
Cám ơn "(lưu ý, tuy nhiên, requestFullScreen 'chỉ hoạt động trong' '[m] ost UIEvents và MouseEvents, chẳng hạn như nhấp chuột và KeyDown, vv', 'vì vậy nó không thể được sử dụng độc hại'.)"

documentElementtốt hơn bodycho tôi.
Matt

24

Đây là một giải pháp hoàn chỉnh để vào và ra khỏi chế độ toàn màn hình (còn gọi là hủy, thoát, thoát)

        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
Thế còn msIsFullScreen?
kangax

1
Thông số kỹ thuật đã thay đổi. webkitCancelFullScreentại là webkitExitFullscreen. createdcontent.org/post/70347573294/ từ
Doug S

phần đầu tiên của logic và hoạt động này là dư thừa và cần được loại bỏdocument.fullScreenElement && document.fullScreenElement !== null
consideRatio

thay đổi elemtrong toggleFull()từ document.bodyđể document.documentElementđể sửa chữa trái và lề phải vấn đề
Firnas


8

Công nghệ html5 mới - API toàn màn hình cho chúng ta một cách dễ dàng để trình bày nội dung trang web ở chế độ toàn màn hình. Chúng tôi sắp cung cấp cho bạn thông tin chi tiết về chế độ toàn màn hình. Chỉ cần cố gắng tưởng tượng về tất cả các lợi thế có thể có mà bạn có thể có được bằng cách sử dụng công nghệ này - album ảnh toàn màn hình, video và thậm chí cả các trò chơi.

Nhưng trước khi chúng tôi mô tả công nghệ mới này, tôi phải lưu ý rằng công nghệ này là thử nghiệm và được hỗ trợ bởi tất cả các Trình duyệt chính .

Bạn có thể tìm thấy hướng dẫn đầy đủ ở đây: http://www.css-jquery-design.com/2013/11/javascript-jquery-fullscreen-browser-window-html5-t Technology /

Đây là bản demo đang hoạt động: http://demo.web3designs.com/javascript-jquery-fullscreen-browser-window-html5-t Technology.htmlm


1
@Ian Nó đang hoạt động trong IE edge. Phiên bản cũ hơn của IE không hỗ trợ này.
Dhiraj

8

Tôi đã sử dụng ...

<!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ó một vấn đề parens trên dòng này
Kevin Bowersox

Đó là từ cha mẹ mặc dù. Không hữu ích khi cửa sổ đã được mở.
Christian

7

Ví dụ đơn giản từ: http://www.longtailvideo.com/blog/26517/USE-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

Tạo chức năng

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

Trong Html Đặt mã như

<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 dường như không phát hiện ra rằng ở chế độ toàn màn hình trong IE 11 (vì vậy không đóng).
Ian

3

Bây giờ các API toàn màn hình đã phổ biến rộng rãi hơn và dường như đang hoàn thiện, tại sao bạn không thử dùng Screenfull.js ? Tôi đã sử dụng nó lần đầu tiên vào ngày hôm qua và hôm nay ứng dụng của chúng tôi thực sự toàn màn hình trong (gần như) tất cả các trình duyệt!

Hãy chắc chắn ghép nó với lớp :fullscreengiả trong CSS. Xem https://www.sitepoint.com/use-html5-full-screen-api/ để biết thêm.


Kịch bản nhỏ tuyệt vời. Sử dụng nó trên trang web của tôi bây giờ tại www.StarCommanderOnline.com. Cám ơn!
Andy

3

May mắn thay cho người dùng web không nghi ngờ điều này không thể được thực hiện chỉ với javascript. Bạn sẽ cần phải viết các plugin cụ thể cho trình duyệt, nếu chúng chưa tồn tại và sau đó bằng cách nào đó sẽ khiến mọi người tải xuống chúng. Gần nhất bạn có thể nhận được là một cửa sổ tối đa hóa không có công cụ hoặc thanh điều hướng nhưng người dùng vẫn có thể thấy url.

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

Điều này thường được coi là thực hành xấu mặc dù nó loại bỏ rất nhiều chức năng trình duyệt khỏi người dùng.


3

Hãy thử screenfull.js . Đây cũng là một giải pháp đa trình duyệt đẹp, phù hợp với trình duyệt Opera.

Trình bao bọc đơn giản để sử dụng nhiều trình duyệt API API toàn màn hình, cho phép bạn đưa trang hoặc bất kỳ thành phần nào vào toàn màn hình. Làm dịu đi sự khác biệt khi thực hiện trình duyệt, do đó bạn không cần phải làm vậy.

Bản demo .


2

Điều này có thể hỗ trợ

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

Bạn có thể thử:

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


Có vẻ thất bại đối với tôi trong Chrome 76 trên Ubuntu
Jonathan

1

Hãy thử kịch bản này

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

Để gọi từ tập lệnh, hãy sử dụng mã này,

window.fullScreen('fullscreen.jsp');

hoặc với siêu liên kết sử dụng này

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

1

Trong Firefox 10, bạn có thể làm cho trang hiện tại ở chế độ toàn màn hình (toàn màn hình thực không có cửa sổ chrome) bằng cách sử dụng javascript này:

window.fullScreen = true;

1
Thuật ngữ "được cho là" quá tải trong phần mềm. Trong một số trình duyệt, nó chỉ đọc. Firefox 10 cho phép bạn thiết lập nó.
Leopd

1

Điều này sẽ hoạt động để hiển thị cửa sổ của bạn trong toàn màn hình

Lưu ý: Để làm việc này, bạn cần Truy vấn từ http://code.jquery.com/jquery-2.1.1.min.js

Hoặc thực hiện có liên kết javascript như thế này.

<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

Cách hỏi và đáp toàn màn hình, nếu bạn ở trong tình huống "kiosk", là đưa F11 vào cửa sổ trình duyệt sau khi nó hoạt động. Điều này không khởi động tốt và người dùng có thể chọc màn hình cảm ứng ở phía trên và có chế độ xem toàn màn hình, nhưng cho F11 có thể thực hiện trong một nhúm hoặc chỉ để bắt đầu một dự án.


0

Đây là giải pháp đầy đủ của tôi cho Full ScreenExit Full Screencả hai (rất cám ơn sự giúp đỡ từ câu trả lời của tháp ở trên):

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

});

// GỌI:

<input type="button" value="Full Screen" onclick="$.toggleFS(this);" />
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.