[英]javascript freezing tabs, and input
我正在做一個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代碼。 我嘗試了有無變量,並且嘗試了修改它。 當它們只是一項關鍵功能時,它的工作原理絕對不錯,但是一旦我添加了幾項功能,它就會死機。 我縮進了,縮進了什么都沒有。 我已經檢查了其他一些類似的問題,這些問題據說可以執行諸如remove variable之類的事情,而我做到了,但它仍然凍結。
您正在創建一個死循環來凍結該選項卡。
while (1 == 1) {
//infinite loop
}
無需這樣做,只需將偵聽器附加到每次事件發生時觸發回調的窗口即可:
window.addEventListener('keypress', function (e) {
console.log(e)
});
onkeypress屬性設置並返回當前元素的onKeyPress事件處理程序代碼。
由於您當前的元素是運行report
時的window
,因此事件偵聽器將監聽任何按鍵,因此實際上並不需要while
語句,它實際上會使您的應用程序凍結。
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
之所以凍結是因為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")
}
}
這就是所需要的,代碼將被“異步”調用
嘗試刪除“ while(1 == 1)”。 似乎並沒有離開while循環。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.