我需要更改粘贴事件的标准行为。我想延迟执行几毫秒的粘贴事件。有没有纯JavaScript或jQuery的方法可以实现这一点?
编辑:更明确地说,当发生粘贴事件时,我需要执行一个动作,等待几毫秒然后进行粘贴。
编辑:更明确地说,当发生粘贴事件时,我需要执行一个动作,等待几毫秒然后进行粘贴。
您可以向接收粘贴事件的元素添加一个onpaste事件处理程序。
在处理程序中,您应该:
例如:
var myElement = document.getElementById('pasteElement');
myElement.onpaste = function(e) { //Add handler to onpaste event
doSomethingHere(); //Do something before the delay
sleep(200); //Add the delay
return true; //return true continue with default paste event
}
//One way to introduce a delay
function sleep(milliseconds) {
var start = new Date().getTime();
for (var i = 0; i < 1e7; i++) {
if ((new Date().getTime() - start) > milliseconds){
break;
}
}
}
编辑:添加了一行以显示在等待之前执行操作的位置。
$('input').each(function(){
$(this).bind('paste', function(e){
$(this).css('color', '#fff');
setTimeout(function(){
e.target.style.color="#000";
},500)});
});
setTimeout
函数不会让我们等待文本显示。 - vusan在 Sctt
的回答基础上(但不使用可怕的 sleep()
函数),请尝试以下操作:
var delayTime = 5000; // 5 seconds
$('#myObject').bind('paste', function() {
// Code here is executed before the delay
setTimeout(function() {
// Code here is executed during the delay
}, delayTime);
return true;
});