2016-04-17 21 views
9

Aşağıdaki kod parçacığı SO üzerine gömülü olarak çalışacağından emin değil, ancak yapıştırırken çalışmadığı için, tek başına çalışır.Javascript kullanarak tam ekran onclick'inden nasıl çıkılır?

Sorun, bunun bir geçiş anahtarı olmasını istiyorum; sadece tam ekran moduna girmek değil, kullanıcı tam ekrandaysa çıkmak için. Tam ekran moduna mükemmel bir şekilde gider ve çıkış tam ekran kodunu çalıştırır (çıkış kodundan sonra ancak çıkış kodunun koşulu içinde çalışan alert() kutusu gösterilir), ancak hiçbir şey yapmaz.

Bu here numaralı kitabı ve here numaralı kitabı okudum, ki bu her şeyi doğru yaptığımı gösteriyor, ancak bir şey eksik. Bu yordamsal kodun nasıl işleneceğini belirlemeye yardımcı olabilir misiniz?

function fullscreen() { 
 
\t var isInFullScreen = (document.fullscreenElement && document.fullscreenElement !== null) || 
 
\t \t (document.webkitFullscreenElement && document.webkitFullscreenElement !== null) || 
 
\t \t (document.mozFullScreenElement && document.mozFullScreenElement !== null) || 
 
\t \t (document.msFullscreenElement && document.msFullscreenElement !== null); 
 

 
\t var docElm = document.documentElement; 
 
\t if (!isInFullScreen) { 
 
\t \t if (docElm.requestFullscreen) { 
 
\t \t \t docElm.requestFullscreen(); 
 
\t \t } else if (docElm.mozRequestFullScreen) { 
 
\t \t \t docElm.mozRequestFullScreen(); 
 
\t \t } else if (docElm.webkitRequestFullScreen) { 
 
\t \t \t docElm.webkitRequestFullScreen(); 
 
\t \t } else if (docElm.msRequestFullscreen) { 
 
\t \t \t docElm.msRequestFullscreen(); 
 
\t \t } 
 
\t } else { 
 
\t \t if (docElm.exitFullscreen) { 
 
\t \t \t docElm.exitFullscreen(); 
 
\t \t } else if (docElm.webkitExitFullscreen) { 
 
\t \t \t docElm.webkitExitFullscreen(); 
 
\t \t } else if (docElm.mozCancelFullScreen) { 
 
\t \t \t docElm.mozCancelFullScreen(); 
 
\t \t } else if (docElm.msExitFullscreen) { 
 
\t \t \t docElm.msExitFullscreen(); 
 
\t \t } 
 
\t \t alert('exit fullscreen, doesnt work'); 
 
\t } 
 
}
<a onclick="fullscreen()" href="javascript:void(0);">Toggle FullScreen</a>

Ben de this questions accepted answer göre, uyarı kodudur parent.exitfs() ekleyerek denedim ve hala

cevap

19

bunu çözdü hiçbir etkisi yoktur.

Görünüşe göre, tam ekrana girmek için, Element'i kullanmanız gerekir, ancak tam ekrandan çıkmak için document'u kullanırsınız.

İşte tam ekran değiştirmek için tam javascript işlevi işte !!!

function fullscreen() { 
    var isInFullScreen = (document.fullscreenElement && document.fullscreenElement !== null) || 
     (document.webkitFullscreenElement && document.webkitFullscreenElement !== null) || 
     (document.mozFullScreenElement && document.mozFullScreenElement !== null) || 
     (document.msFullscreenElement && document.msFullscreenElement !== null); 

    var docElm = document.documentElement; 
    if (!isInFullScreen) { 
     if (docElm.requestFullscreen) { 
      docElm.requestFullscreen(); 
     } else if (docElm.mozRequestFullScreen) { 
      docElm.mozRequestFullScreen(); 
     } else if (docElm.webkitRequestFullScreen) { 
      docElm.webkitRequestFullScreen(); 
     } else if (docElm.msRequestFullscreen) { 
      docElm.msRequestFullscreen(); 
     } 
    } else { 
     if (document.exitFullscreen) { 
      document.exitFullscreen(); 
     } else if (document.webkitExitFullscreen) { 
      document.webkitExitFullscreen(); 
     } else if (document.mozCancelFullScreen) { 
      document.mozCancelFullScreen(); 
     } else if (document.msExitFullscreen) { 
      document.msExitFullscreen(); 
     } 
    } 
} 

Ve nasıl kullanılacağını basit bir vaka:

<a onclick="fullscreen()" href="javascript:void(0);">Toggle FullScreen</a> 

Bu kullanıcının sayfasında bir eylem yaptığında adında bir kısa yöntem olduğundan emin olmak gerekir. Belgelerin söylediklerinden, bu, daha yüksek bir erişim modu gerektiren bir özelliktir ve bu nedenle, (şu anda) sayfa tam yüklendiğinde veya tam zamanlı olaylarda (örneğin bir Kullanıcılar Click gibi eylemler)

+0

Görünüşe göre, bu belgeyi alıyorum 'document.exitFullscreen işlevi değil '. Herhangi bir fikir? – Nigel