javascript冻结标签和输入

时间:2017-08-19 18:34:42

标签: javascript

我正在制作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代码。我有无变量尝试过,我尝试过修改它。当它们只是一个关键功能时,它工作得非常好,但是一旦我添加几个它就冻结了。 我已经去了,并且缩进没有任何效果。 我已经检查了一些其他类似的问题,据说做了删除变量之类的事情,我这样做了,它仍然冻结。

4 个答案:

答案 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循环。