当用户同时按下“Space”和“Enter”键时,我试图在我的网页中提供全屏选项。我有以下代码。我有以下代码。但它没有用。我哪里错了?如果我给一把钥匙就可以了。
<!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>
答案 0 :(得分: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的情况下解决了这个问题。
答案 1 :(得分: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);
});