Javascript:粘贴事件

时间:2013-06-03 12:23:38

标签: javascript events delay paste

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

编辑:更确切地说,当触发粘贴事件时,我需要进行操作,等待几毫秒然后粘贴。

3 个答案:

答案 0 :(得分:0)

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

在处理程序中你应该:

  1. 添加延迟(有多种方法可以执行此操作)
  2. 返回true,以便默认处理程序继续进行粘贴操作。
  3. 例如:

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