相当于 jQuery 的 keyup() 和 keydown() 的 JavaScript

标签 javascript jquery html css keypress

我在 stackoverflow 上看到了这个链接:$(document).ready equivalent without jQuery

在我的上下文中,我正在使用

$(document).keydown(Keypress);
$(document).keyup(Keyoff);

函数

 function Keypress(evt) {
     if (evt.keyCode == 39) rightpress = true;
     else if (evt.keyCode == 37) leftpress = true;
 }

 //unset
 function Keyoff(evt) {
     if (evt.keyCode == 39) rightpress = false;
     else if (evt.keyCode == 37) leftpress = false;
 }

是否有等效的 JavaScript?喜欢 window.onload 吗?

最佳答案

为了使用一些与 jQuery 的 on 方法更“等效”的方法,您不应使用 onkeydownonkeyup 处理程序。使用 addEventListenerattachEventattachEvent 专门针对旧版本的 IE,因此 addEventListener 是标准的,并被所有其他浏览器使用。但是你应该总是包含支持,这样你就可以创建一个函数来处理所有的事情。尝试:

function addEvent(element, eventName, callback) {
    if (element.addEventListener) {
        element.addEventListener(eventName, callback, false);
    } else if (element.attachEvent) {
        element.attachEvent("on" + eventName, callback);
    }
}

addEvent(window, "keydown", Keypress);
addEvent(window, "keyup", Keyoff);

这允许您添加多个 处理程序,就像jQuery 的on 方法一样。设置 .onkeydown.onkeyup 属性只允许一个处理程序(除非你想覆盖另一个)。 addEvent 函数可以做的还有很多,可以实现标准的跨浏览器事件处理(一个例子是基于回调的返回类型发生的事情)。现在这真的不重要——如果你想要完全的跨浏览器兼容性,这就是 jQuery 的目的:)

引用资料:

关于相当于 jQuery 的 keyup() 和 keydown() 的 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16493645/

相关文章:

css - 如何固定靠近事件窗口右边界的div位置

html - 跨度消息显示在屏幕顶部

javascript - 未捕获的类型错误 : data[option] is not a function bootstrap. js:1215

javascript - 无法在具有相同类名的多个元素中定位单个输入(jQuery)

javascript格式数字

javascript - 正则表达式 - 将字符串转换为驼峰大写字母 `dot`

javascript - $scope.$watch 整个表单,但仅获取旧值一次

javascript - 从使用 JavaScript 未打开弹出窗口的窗口关闭弹出窗口

javascript - 单击按钮时启动 css 动画

javascript - 比较 jQuery (javascript?) 事件的同源点击