43


16

IEやFirefoxでJavaScriptを使って右クリックした後に貼り付けを検出する方法はありますか?

更新:

Jqueryを使用することにしました。

$( '#controlId')。bind( 'paste'、null、function(){// code});

それは私が見ていたものとは正確には同じではありません(それは 'ctrl v’と 'right click paste’で発火しますが、私はそれを回避することができます。

Chrome、Firefox 3、IE 7、IE 6でテストしました

7 Answer


71


私はこの解決策が好きです:

$( '#txt_field')。bind( 'input propertychange'、function(){console.log($(this).val());});


23


$( '#controlId')。bind( 'paste'、null、function(e){if(!e.keyCode){/ *イベント発生時にキーが押されていなかったため、ツールバーからのものと見なすことができます。またはメニューを右クリックし、Ctrlキーを押しながらv * /}}を使用することはできません。


8


IEではあなたが貼り付けます

Mozillaを使えば、oninputを調べることができます

elementReference.addEventListener( "DOMCharacterDataModified"、関数(e){foo(e);}、false);

簡単な解決策はありません。

エリック


4


`setTimeout()`を使用して、.val()funcが生成されるまで小さなタイムアウトを設定します。

$(document).on('paste blur keyup', '#controlId', function(event) {
    var element = $(event.target);
    setTimeout(function() {
        var text = $(element).val();
        // do something with text
    }, 100);
});

ソース:https://stackoverflow.com/questions/686995/catch-paste-input [キャッチペースト入力]


0


私はIE8で同じ問題を抱えていました。 Chromeでは、右クリックの貼り付けを認識させることができましたが、IE 8では認識されませんでした。

私はAaronによって記述されているようにマウスのままにする機能を使用してJQUERYに関する問題を解決することができました、しかしここにコードがあります:

IE8の場合:$( "#field").mouseleave(function(){doStuff()); ;));

Chromeの場合:$( '#field')。bind( 'input'、function(){doStuff();});


0


私は次のことをしました。

onmouseup = "jQuery(this).on( '貼り付け'、function(event){setTimeout(function(){alert( '貼り付け検出!');}、100);});"


-1


あなたが試すことができる(うまくいく)安いハックは:

  • jQueryのマウスを離す機能。

テキストボックスを右クリックして[貼り付け]を選択すると、貼り付けが完了するまで「mouseleave」イベントが遅延することがIE 8でわかりました。 それで、それはペーストの直後に一貫して発射します! :)私のために働いて、実際に問題から完全に私を導きました。

これはイントラネットアプリケーション専用です。Firefoxなどではテストしていません。

乾杯