jjzjj

javascript - 为什么我可以使用 Javascript 在 keydown 而不是 keyup 上阻止默认事件?

使用.keydown时我可以捕获按键事件,然后检查并防止默认操作(显示字符)。使用.keyup时我不能?我知道事件被捕获为alert()当代码在条件内但preventDefault()时触发不会阻止操作。这是完整的DEMO 最佳答案 在keyup事件中,字符已被输入且无法撤消,但在keydown中,没有输入任何内容,浏览器有intent键入字符,以便您可以取消浏览器意图。每当您键入一个字符时,都会发生以下事件:keydown-->keypress重复直到释放键-->keyupkeydown->可以阻止->当按下一个键时触发keypr

javascript - 在 vanilla Javascript 中以编程方式触发 keydown 事件

我在keydown上运行的窗口附加了一个事件。我想通过以编程方式敲击键盘上的键的例程(每个间隔)来测试这一点。以下代码不起作用-但如果我实际按下键盘上的某个键,则可以正常工作。我最初尝试过:varevt=document.createEvent("KeyboardEvent"); setInterval(function(){evt.initKeyEvent("keydown",true,true,window,false,false,false,false,13,13);},500);这是我当前的keydown事件:window.addEventListener('keydown',

javascript - 在 Chrome 中拖动鼠标时未触发 keydown 事件

我注意到Chrome中关于按键事件的奇怪行为。我有这个简单的脚本(http://jsfiddle.net/xYDbt/1/):document.onkeydown=function(e){document.getElementById("x").innerHTML+="Hi";}在Chrome中,如果在按下左键的同时移动鼠标,则不会触发该事件。这种情况仅在加载页面后第一次发生。随后的按键工作正常。我在FF/Opera/IE中测试过,没有问题。Chrome有解决方法吗? 最佳答案 虽然onkeydown和onkeypress受此错误影

javascript - 在 iframe 中捕获所有 keyup/keydown 事件?

我正在开发基于Canvas的游戏,并使用window.addEventListener()全局附加keyup和keydown事件。这在正常查看页面时有效,但在将其作为iframe嵌入时有效;它没有获取keyup和keydown事件。有没有更好的方法可以做到这一点? 最佳答案 你不能,除非框架有焦点。你可以做的是在外部窗口上按下键使iframe聚焦,或者总是以某种方式聚焦iframe,或者默认聚焦iframe(可能足够好,不确定你在做什么)但要使窗口keydown在该框架需要焦点的任何窗口(框架或非框架)上触发。

javascript - 我怎么知道 keydown 会导致 keypress 事件,在那种情况下忽略它?

我对javascript中的关键事件不是很满意。我需要捕获用于书写的字母(我正在上书写文本)和用于其他命令的功能键(转义)。在Firefox中它可以工作,因为Firefox会触发keypress任何键的事件。很舒服但是specificationdirectlypermitsit:Ifsupportedbyauseragent,thiseventMUSTbedispatchedwhenakeyispresseddown,ifandonlyifthatkeynormallyproducesacharactervalue.我不同意该规范,因为我认为没有理由这样做。但事已至此,我也无能为力。问

javascript - Karma 中的单元测试 : Keypress inside a text Input

有一个简单的html文本输入:testcharacter.init();希望能够在此文本输入内发生的每个按键上运行单元测试,并根据特定键检查它。Javascript文件是:'usestrict';window.testcharacter=window.testcharacter||{};(function(){vartestcharacter=function(k){vars=document.getElementById('inputstring').valueif(s!=null||s.trim()!=""){if(k==65){document.getElementById('r

javascript - 从 jquery 元素中删除 keydown 事件不起作用

我在元素上有keydown事件。$("#element").keydown(function(){//dostuff!});现在我想删除它。我尝试了unbind和off但都没有用。$("#element").unbind("click");$("#element").off("click");我需要执行.on("click",function...)还是.bind("click",function...)而不是.click如果使用unbind或off。如果是这样,这不是我的代码,我不能修改它,所以我需要一个替代方法。除了“解除绑定(bind)”或“关闭”之外,还有其他有效的方法吗?谢谢

javascript - JS - 将字母数字键盘 keyCode 映射到拨号盘号码 2 - 9

我正在尝试创建一个拨号器小部件,捕获“keydown”事件并突出显示相应的拨号器号码。因此,例如,单击键盘上的“A”,会在UI上突出显示“2”:我已经设法映射前5位数字(2-6)。因为它们每个包含3个字母,所以我能够像这样映射keyCode:Math.floor(((KeyCode-65)/3)+2).问:有没有办法在一行中完成,所以PQRS和WXYZ适合解决方案? 最佳答案 如果你真的需要它,那可能有用:Math.min(9,Math.floor(((KeyCode-(KeyCode但您还必须确保KeyCode实际上是一个字母。您

javascript - React 的 TestUtils.Simulate.keyDown 不起作用

我的应用程序中有很多组件可以响应不同的按键操作,到目前为止,我使用TestUtils.Simulate.keyDown的测试都无法正常工作。似乎keyDown简单明了是行不通的。这是我要测试的组件:描述.jsvarReact=require('react/addons');varDescription=React.createClass({render:function(){return()}});module.exports=Description;这是一个失败的简单测试:描述-test.jsvarReact=require('react/addons');varTestUtils=

javascript - jQuery keydown 但如果在文本框中则忽略

我正在调用一个函数(如下),如果用户按下删除按钮,该函数将执行一个操作。它工作正常,但我只需要在页面上而不是在用户输入时(在输入内或文本区域内)进行。$(window).keydown(function(evt){if(evt.which==46){//deletegoDoSomething();}});任何想法我如何修改上述内容以不触发如果用户in输入或文本区域?提前致谢戴夫 最佳答案 检查evt.target的类型:$(window).keydown(function(evt){if(evt.target.tagName.toL