我正在制作JavaScript onkeypress功能。
function report() {
while (1 == 1) {
window.onkeypress = function(event) {
/* from this point down, keylog functions. */
// above is a variable
if (event.keyCode == 32) {
console.log("Spacebar._rep")
}
if (event.keycode == 33) {
console.log("escalation-Mark._rep")
}
if (event.keycode == 34) {
console.log("quotation-Mark._rep")
}
if (event.keycode == 35) {
console.log("hashtag._rep")
}
if (event.keycode == 36) {
console.log("dollar-Sign._rep")
}
if (event.keycode == 37) {
console.log("percent-Symbol._rep")
}
if (event.keycode == 38) {
console.log("pi")
}
}
}
}
report()
每当我运行此代码时,它会冻结所有形式的输入,我仍然可以滚动,打开标签页并点击。我无法关闭选项卡,重新加载或更改JavaScript代码。我有无变量尝试过,我尝试过修改它。当它们只是一个关键功能时,它工作得非常好,但是一旦我添加几个它就冻结了。 我已经去了,并且缩进没有任何效果。 我已经检查了一些其他类似的问题,据说做了删除变量之类的事情,我这样做了,它仍然冻结。
答案 0 :(得分:2)
你正在创建一个冻结该标签的无限循环。
while (1 == 1) {
//infinite loop
}
不要这样做,只需将侦听器附加到每次事件发生时触发回调的窗口:
window.addEventListener('keypress', function (e) {
console.log(e)
});
答案 1 :(得分:1)
onkeypress属性设置并返回onKeyPress事件处理程序 当前元素的代码。
当你运行window
当前元素为report
时,事件监听器将监听任何按键,实际上不需要while
语句,它实际上会冻结你的app
function report() {
window.onkeypress = function(event) {
if (event.keyCode == 32) {
console.log("Spacebar._rep")
}
if (event.keycode == 33) {
console.log("escalation-Mark._rep")
}
if (event.keycode == 34) {
console.log("quotation-Mark._rep")
}
if (event.keycode == 35) {
console.log("hashtag._rep")
}
if (event.keycode == 36) {
console.log("dollar-Sign._rep")
}
if (event.keycode == 37) {
console.log("percent-Symbol._rep")
}
if (event.keycode == 38) {
console.log("pi")
}
}
}
report()

1

答案 2 :(得分:0)
由于while (1==1)
无限运行,所以你不应该写这样的代码。它阻止了浏览器
window.onkeypress = function(event) {
/* from this point down, keylog functions. */
// above is a variable
if (event.keyCode == 32) {
console.log("Spacebar._rep")
}
if (event.keycode == 33) {
console.log("escalation-Mark._rep")
}
if (event.keycode == 34) {
console.log("quotation-Mark._rep")
}
if (event.keycode == 35) {
console.log("hashtag._rep")
}
if (event.keycode == 36) {
console.log("dollar-Sign._rep")
}
if (event.keycode == 37) {
console.log("percent-Symbol._rep")
}
if (event.keycode == 38) {
console.log("pi")
}
}
这就是所需要的,代码将被“异步”称为
答案 3 :(得分:0)
尝试删除“while(1 == 1)”。似乎它不会留下while循环。