我需要更改粘贴事件的标准行为。我想延迟几毫秒的粘贴事件的执行。有没有办法在纯 javascript 或 jQuery 中做到这一点?
编辑:更准确地说,当一个粘贴事件被触发时,我需要做一个动作,等待几毫秒然后粘贴。
我需要更改粘贴事件的标准行为。我想延迟几毫秒的粘贴事件的执行。有没有办法在纯 javascript 或 jQuery 中做到这一点?
编辑:更准确地说,当一个粘贴事件被触发时,我需要做一个动作,等待几毫秒然后粘贴。
基于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;
});
只是改变颜色怎么样。文本保持白色 500 毫秒。
$('input').each(function(){
$(this).bind('paste', function(e){
$(this).css('color', '#fff');
setTimeout(function(){
e.target.style.color="#000";
},500)});
});
您可以将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;
}
}
}
编辑:添加了一行以显示在等待之前执行操作的位置。