2015-02-11 43 views
0

我有以下代碼:訪問window.event.altkey中的setInterval

function optionkey() 
{ 
    e = window.event; 
    if(e.altKey) 
    { 
     return "down"; 
    } 
    else 
    { 
     return "up"; 
    } 
} 

interval = setInterval(function(){ 
    if(optionkey() == "down") { 
     clearInterval(interval); 
     alert(5); 
    } 
}, 100); 

基本上代碼應該運行alert(5)當用戶按下option鍵,而是我得到的錯誤的負載:Uncaught TypeError: Cannot read property 'altKey' of undefined

任何人都可以告訴我爲什麼這樣做,以及如何解決它?

謝謝。

jsfiddle

回答

0

請讓我知道,如果我誤解了你的需要,但如果你想報警按鍵,當你被解僱了需要創建一個事件偵聽器onkeydown像這樣

window.onkeydown = function (e) { 
    if(e.altKey){ 
     alert(5); 
    } 
} 
0

首先event.altKey的只能在按鍵(輸入)等​​和keyup事件被檢測到。但是從setInterval調用函數將不會觸發altkey。您需要在事件處理程序中捕獲並傳遞它。

function optionkey() 
 
{ 
 
\t if(window['globalAltKey']) 
 
\t { 
 
\t \t return "down"; 
 
\t } 
 
\t else 
 
\t { 
 
\t \t return "up"; 
 
\t } 
 
} 
 

 
interval = setInterval(function(){ 
 
    if(optionkey() == "down") { 
 
     clearInterval(interval); 
 
     alert(5); 
 
    } 
 
}, 100); 
 

 
window.addEventListener("keydown", function(e){ 
 
    if (e.altKey) 
 
    { 
 
     globalAltKey = true; 
 
    } 
 
    else 
 
    { 
 
     globalAltKey = false; 
 
    } 
 
     
 
    
 
}, false)

現在的間隔仍將測試,如果option鍵()將返回向下或向上。只有當用戶點擊alt這將觸發警報。

我不知道爲什麼你選擇了這種方法,你可以簡單地附加一個單擊處理程序按鈕,並使用我公司提供的keydown事件來檢查ALT鍵被按下全局。