html的text显示默认值阻止键,javascript – 使用iframe阻止对按键的默认操作

这是一个问题22我真的无法弄清楚如何解决.以我们主持的HTML5游戏为例:

该页面托管在scirra.com上,但出于安全原因,该游戏位于static1.scirra.net上的iframe中.

现在,如果你在玩游戏时向左或向右,向上或向下按,则整个窗口上下左右滚动.当游戏没有集中时,防止默认似乎工作正常.我们希望在玩游戏时防止此默认操作!所以我们使用代码:

var ar = new Array(32, 33, 34, 35, 36, 37, 38, 39, 40, 44);

$(document).keydown(function (e) {

var key = e.which;

if ($.inArray(key, ar) > -1) {

e.preventDefault();

return false;

}

return true;

});

我们将它放在父页面和iframe页面上.当iframe左右焦点似乎被阻挡,但没有上下.

任何人都可以帮助我们解决如何停止页面滚动,并仍然允许人们在游戏下方的评论框中键入评论?如果你阻止空格键,它会阻止人们在文本中添加空格!

解决方法:

我可能不完全理解这个问题,但似乎你想要:

>上,下,空间等仅在有焦点时才进入游戏窗口.

>上,下,空格等,以便在有焦点时转到评论框.

>上,下,空格等,当有焦点时进入主窗口.

数字#2和#3是你什么也不做的自动发生的事情.所以基本上你想要#1.我不明白为什么你需要在主窗口上的任何代码.

这在我的测试中适用于Chrome,Opera,FF,IE9,IE8,IE7.

主窗口

HTML:

CSS:

#game {

border: 1px solid red;

display: block;

height: 100px;

width: 200px;

}

#comment-box {

height: 100px;

width: 200px;

}

body {

height: 1000px;

width: 1000px;

}

游戏窗口(iframe)

脚本:

$( document ).bind( 'keydown', function ( event ) {

var keys = [32, 33, 34, 35, 36, 37, 38, 39, 40, 44];

if( keys.indexOf( event.which ) > -1 ) {

event.preventDefault();

event.stopPropagation();

};

} );

标签:javascript,jquery,html5,iframe,preventdefault

来源: https://codeday.me/bug/20190726/1540838.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值