2011-11-30 44 views
0
<div id="divbody"> 
    <button id="begin">Click me</button> 

    <script> 
     $(document).ready(function() { 
      $("#begin").click(function() { 
       var e = document.getElementById('divbody'); 
       e.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT); 
      }); 
      document.addEventListener("webkitfullscreenchange",function(){ 
       if (document.webkitIsFullScreen) { 
        //alert('a'); 
        document.webkitCancelFullScreen(); 
       } 
      }, false); 
     }); 
    </script> 
</div> 

以下代碼基本上應該在進入時立即取消全屏。但是,上面的代碼不起作用(例如,它進入全屏,但不會取消)。但是,通過取消註釋webkitfullscreenchange事件處理程序中的警報,它確實會取消。JavaScript/HTML5 FullScreen API

我很難理解爲什麼會這樣。另外,如何在不使用警報的情況下實現我想要做的事情?

謝謝。

UPDATE

我已經嘗試了所有的評論,但它似乎並沒有工作。任何幫助,將不勝感激!

回答

0

像這樣的問題,alert()修復問題始終是事​​件順序的問題。一個解決方案,幾乎總是工作就是把有問題的代碼在很短的時間功能:

window.setTimeout(cancelFull,10); 
function cancelFull() { document.webkitCancelFullScreen(); } 

UPDATE 把setTimeout的()代替當前的CancelFullScreen的,在監聽器裏。

+0

這只是調用'cancelFull'馬上和傳遞'undefined'到'setTimeout' – Esailija

+0

它實際上應該是'window.setTimeout(cancelFull,10)'如果你想這是正確的方式 – Leon

+0

不,不,你把超時放在你現在正在取消的地方,我只是沒有發佈整個替換。 –

0

試試這個:

window.setTimeout(document.webkitCancelFullScreen, 10); 
+0

我試過了,但它似乎不工作...... :( – Student01