我需要更改粘贴事件的标准行为。我想延迟执行几毫秒的粘贴事件。有没有办法在纯JavaScript或jQuery中做到这一点?
编辑:更确切地说,当触发粘贴事件时,我需要进行操作,等待几毫秒然后粘贴。
答案 0 :(得分:0)
您可以向接收粘贴事件的元素添加 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;
}
}
}
编辑:添加了一行以显示在等待前执行操作的位置。
答案 1 :(得分:0)
如何改变颜色呢。文本保持白色500毫秒。
$('input').each(function(){
$(this).bind('paste', function(e){
$(this).css('color', '#fff');
setTimeout(function(){
e.target.style.color="#000";
},500)});
});
答案 2 :(得分:0)
以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;
});