Javascript:粘贴事件
我需要更改粘贴事件的标准行为。我想将粘贴事件的执行延迟几毫秒。在纯javascript或jQuery中有什么方法可以做到这一点 编辑:更准确地说,当触发粘贴事件时,我需要执行操作,等待几毫秒后再粘贴。您可以向接收粘贴事件的元素添加onpaste事件处理程序 在处理程序中,您应该:Javascript:粘贴事件,javascript,events,delay,paste,Javascript,Events,Delay,Paste,我需要更改粘贴事件的标准行为。我想将粘贴事件的执行延迟几毫秒。在纯javascript或jQuery中有什么方法可以做到这一点 编辑:更准确地说,当触发粘贴事件时,我需要执行操作,等待几毫秒后再粘贴。您可以向接收粘贴事件的元素添加onpaste事件处理程序 在处理程序中,您应该: 添加延迟(有多种方法可以做到这一点) 返回true,以便默认处理程序继续粘贴操作 例如: var myElement = document.getElementById('pasteElement'); myElem
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;
}
}
}
var myElement=document.getElementById('pasteElement');
myElement.onpaste=函数(e){//将处理程序添加到onpaste事件
doSomethingHere();//在延迟之前做点什么
sleep(200);//添加延迟
return true;//返回true使用默认粘贴事件继续
}
//引入延迟的一种方法
函数睡眠(毫秒){
var start=new Date().getTime();
对于(变量i=0;i<1e7;i++){
如果((新日期().getTime()-start)>毫秒){
打破
}
}
}
编辑:添加一行以显示在等待之前在何处执行操作。仅更改颜色如何。文本在500毫秒内保持白色
$('input').each(function(){
$(this).bind('paste', function(e){
$(this).css('color', '#fff');
setTimeout(function(){
e.target.style.color="#000";
},500)});
});
基于
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;
});
我想如果你能发现它,你就可以推迟它:?您想延迟粘贴文本的显示,还是在JavaScript land中触发事件时?嗯,我想延迟粘贴文本在触发粘贴事件几毫秒后显示,因为您无法手动触发粘贴事件。啊。。不要做那样的睡眠功能。。。它将冻结浏览器两秒钟,可能会导致错误。这不起作用,因为执行已冻结,就像我没有等待一样。这将使所有文本不可见,而不仅仅是粘贴的文本。再加上我需要的是真正的延迟。做一个动作,然后等待几毫秒,然后粘贴。我还想知道,
setTimeout
函数不会让我们等待文本显示。