3

貼り付けイベントの標準的な動作を変更する必要があります。Paste イベントの実行を数ミリ秒遅らせたい。純粋なjavascriptまたはjQueryでそれを行う方法はありますか?

編集:より正確には、貼り付けイベントが発生したときにアクションを実行する必要があり、数ミリ待ってから貼り付けます。

4

3 に答える 3

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

の答えに基づいて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

貼り付けイベントを受け取る要素に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 に答える