2013-08-01 7 views
1

Я пытаюсь предоставить полный экран на моей веб-странице, когда пользователь одновременно нажимает клавиши «Пробел» и «Ввод». У меня есть следующий код. У меня есть следующий код. Но это не работает. Где я иду не так? Он работает, если я даю один ключ.Полноэкранный вариант

<!doctype html> 
<html> 
<head> 
    <title>Full Screen Example</title> 
    <style type="text/css"> 
     :-webkit-full-screen #myimage { 
     width: 100%; 
     height: 100%; 
    } 
    </style> 
</head> 
<body> 
    <p>Press "space" and "enter" to enter full screen</p> 
    <p><strong>To use full-screen mode, you need Firefox 9 or later or Chrome 15 or   later.</strong></p> 
    <img src = "./3.jpg" width="640" height="360" id="myimage"> 
</body> 
<script> 
var imageElement = document.getElementById("myimage"); 

function toggleFullScreen() { 
    if (!document.mozFullScreen && !document.webkitFullScreen) { 
     if (imageElement.mozRequestFullScreen) { 
      imageElement.mozRequestFullScreen(); 
     } else { 
      imageElement.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT); 
     } 
    } else { 
     if (document.mozCancelFullScreen) { 
      document.mozCancelFullScreen(); 
     } else { 
      document.webkitCancelFullScreen(); 
     } 
    } 
} 

document.addEventListener("keydown", function(e) { 
    if ((e.keyCode == 13) && (e.keyCode == 32)) { 
     toggleFullScreen(); 
    } 
}, false); 
</script> 

ответ

1

Удалите текущий вызов AddEventListener() и добавьте свой скрипт к тому, что я предоставил ниже. Обратите внимание, что это не будет работать в IE8 (но учитывая, что вы используете функции moz и webkit, я полагаю, вы все равно не нацеливаете его).

var keys = []; 

function keyIsDown(keyCode) { 
    return (keys.indexOf(keyCode) > -1); 
} 

document.addEventListener("keydown", function(e) { 
    // Remember the key being pressed 
    keys.push(e.keyCode); 

    // Check if ENTER and SPACE are both being pressed 
    if (keyIsDown(13) && keyIsDown(32)) { 
    toggleFullScreen(); 
    } 
}, false); 

document.addEventListener("keyup", function(e) { 
    // Remember that this key is no longer being pressed 
    var keyIndex = keys.indexOf(e.keyCode); 
    if (keyIndex > -1) keys.splice(keyIndex, 1); 
}, false); 

Кредит parjun для основной идеи; Я просто справился с этим без jQuery.

0

Вам необходимо сохранить массив нажатых клавиш и освободить ключи.

var keyArray = []; 
function containsAll(firstArray, secondArray){ 
    for(var i = 0 , len = firstArray.length; i < len; i++){ 
    if($.inArray(firstArray[i], secondArray) == -1) return false; 
    } 
    return true; 
} 
document.addEventListener("keydown", function(e) { 
     if ((e.keyCode == 13) || (e.keyCode == 32)) { 
     keyArray.push(e.keyCode); 
     } 
    if(containsAll(['13','32'],keyArray)){ 
toggleFullScreen(); 
} 

    }, false); 
$(document).keyup(function (e) { 
    keyArray.remove(e.keyCode); 
}); 
+0

не работал ............................ – Benny

Смежные вопросы