我會問是否有人知道一個事件監聽器,它在鍵盤上沒有按下按鈕一段確定的時間時開始作業,就像這樣:
document.addEventListener('wait', myFunction);
uj5u.com熱心網友回復:
您可以為此使用setTimeout和。clearTimeout
setTimeout在指定的時間段后運行一個函式。它還回傳一個可以傳遞給的 ID clearTimeout。
clearTimeout取消與您提供的 ID 關聯的超時。
您將呼叫setTimeout啟動“空閑計時器”,并將計時器 ID 存盤在變數中。然后,如果用戶按下了一個鍵(您可以使用keypress事件偵聽器檢測到),那么您將使用它clearTimeout來取消計時器(并可能再次啟動它)。
uj5u.com熱心網友回復:
您可以在這里找到有用的答案:如何在 JavaScript 中檢測空閑時間
您將使用該'keypress'事件。所以基本上創建一個超時并在每次按下一個鍵時重置它!
希望能幫助到你!
uj5u.com熱心網友回復:
沒有聽眾會這樣做。所以也許:
設定一個狀態變數,當一個鍵被按下時它會被重置。
創建延遲函式。在這個例子中,我從可以是的函式回傳一個承諾
awaited。何時
main將其稱為要解決awaits的承諾。delay如果沒有按下任何鍵,它會呼叫一個函式并等待它完成,然后main再次呼叫,否則不會采取進一步的行動。
// Cache the output element used in `writer`
const output = document.querySelector('.output');
// Initialise the status
let status = false;
// Check for `keypress` events
document.addEventListener('keypress', () => status = true);
// Accepts an argument specifying how
// many milliseconds delay there will be
function delay(n) {
return new Promise(res => {
setTimeout(() => res(), n);
});
}
// Random function to test the delay works
function writer() {
return new Promise(async res => {
const str = 'Hello world!';
for (let i = 0; i <= str.length; i ) {
await delay(250);
output.textContent = str.substr(0, i);
}
res();
});
}
// Wait 3 seconds. If no key has been pressed
// call the `writer` function. Reset the status, and
// call `main` again
async function main() {
await delay(3000);
if (!status) {
console.log('No key pressed - calling writer()');
await writer();
} else {
console.log('Key pressed - no further action');
}
status = false;
main();
}
main();
<div class="output"></div>
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/486424.html
標籤:javascript 事件监听器
上一篇:我想在使用axios的反應js中使用api在下拉串列中顯示資料
下一篇:如何根據資料撰寫漂亮的URL?
