Javascript:粘贴事件

Javascript:粘贴事件,javascript,events,delay,paste,Javascript,Events,Delay,Paste,我需要更改粘贴事件的标准行为。我想将粘贴事件的执行延迟几毫秒。在纯javascript或jQuery中有什么方法可以做到这一点 编辑:更准确地说,当触发粘贴事件时,我需要执行操作,等待几毫秒后再粘贴。您可以向接收粘贴事件的元素添加onpaste事件处理程序 在处理程序中,您应该: 添加延迟(有多种方法可以做到这一点) 返回true,以便默认处理程序继续粘贴操作 例如: var myElement = document.getElementById('pasteElement'); myElem

我需要更改粘贴事件的标准行为。我想将粘贴事件的执行延迟几毫秒。在纯javascript或jQuery中有什么方法可以做到这一点

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

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

在处理程序中,您应该:

  • 添加延迟(有多种方法可以做到这一点)
  • 返回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;
        }
      }
    }
    
    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
    函数不会让我们等待文本显示。