我對Web開發相當陌生,我想我認爲我掌握了它的唯一主要問題,遇到了跨瀏覽器兼容性問題。設置接收事件的函數調用超時不適用於IE7
我在網頁上有一個textarea,用戶輸入完成後會調用一個函數。爲了做到這一點,我正在使用jQuery和setTimeout在調用函數之前等待一下。這確保了在每次按鍵後都不會調用該功能。我不希望它在每次按鍵後調用,因爲該函數會向請求處理並返回的servlet發送請求。
該代碼在Chrome上運行正常(我使用Chrome進行調試),但它不適用於IE7。那就是:
var timer = null;
$("#scriptInput").keypress(function() {
clearTimeout(timer);
var thisEvent = window.event;
timer = setTimeout(function() {validateScript(thisEvent);}, 500);
});
function validateScript(evt) {
var code = (evt.keyCode) ? evt.keyCode : evt.which;
//check which key was pressed...
//don't need to send a request on key presses of CAPSLOCK, SHIFT, and ARROW keys
if(code != 20 && code != 16 && code != 37 && code != 38 && code != 39 && code !=40){
sendRequest(2);
}
}
正如你所看到的,我已經在實施與IE7的兼容性進行了大量的嘗試,但都無濟於事:\
它必須與至少IE7兼容,因爲它會被許多使用IE7並且沒有升級權限的機器所使用。
讓我知道你是否需要任何信息! 謝謝!
P.S. 「scriptInput」是它正在影響的textarea的id。
'VAR thisEvent = window.event;' - 獲得擺脫這一點,並將函數頭從'function()'改爲'function(thisEvent)'。 – ThiefMaster
@ ThiefMaster:只需詳細說明:'$(「#scriptInput」)。keypress(function(thisEvent){' –
@ThiefMaster:這是一個答案。 –