我在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?
答案 0 :(得分:9)
为了对jQuery的on
方法使用更多“等效”,您不应该使用onkeydown
和onkeyup
处理程序。使用addEventListener
或attachEvent
。 attachEvent
专门针对旧版本的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的用途:)
参考文献:
答案 1 :(得分:4)
window.onkeydown = Keypress;
window.onkeyup = Keyoff;
https://developer.mozilla.org/en-US/docs/DOM/window.onkeyup
https://developer.mozilla.org/en-US/docs/DOM/window.onkeydown