3

我需要更改粘贴事件的标准行为。我想延迟几毫秒的粘贴事件的执行。有没有办法在纯 javascript 或 jQuery 中做到这一点?

编辑:更准确地说,当一个粘贴事件被触发时,我需要做一个动作,等待几毫秒然后粘贴。

4

3 回答 3

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;
});
于 2013-06-03T13:27:15.550 回答
0

只是改变颜色怎么样。文本保持白色 500 毫秒。

$('input').each(function(){

   $(this).bind('paste', function(e){ 
   $(this).css('color', '#fff');
   setTimeout(function(){
  e.target.style.color="#000";
   },500)});
});
于 2013-06-03T12:54:55.483 回答
0

您可以将onpaste事件处理程序添加到接收粘贴事件的元素。

在处理程序中,您应该:

  1. 添加延迟(有多种方法可以做到这一点)
  2. 返回 true,以便默认处理程序继续粘贴操作。

例如:

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;
    }
  }
}

编辑:添加了一行以显示在等待之前执行操作的位置。

于 2013-06-03T12:48:07.990 回答