jQueryでoncut、oncopy、onpasteをどのように処理しますか?
-
04-07-2019 - |
質問
jQueryのドキュメントは、ライブラリが次のイベントの組み込みサポートを備えていると述べています。ぼかし、フォーカス、ロード、サイズ変更、スクロール、アンロード、クリック、dblclick、mousedown、mouseup、mousemove、mouseover、mouseout、mouseenter、mouseleave、変更、選択、送信、キーダウン、キー押下、キーアップ、およびエラー
切り取り、コピー、貼り付けのイベントを処理する必要があります。それをどのように行うのが最善ですか? FWIW、私はWebKitについて心配するだけです(幸運なことに!)。
更新:「ウィジェット」で作業していますダッシュボードのような環境で。 WebKitを使用しているので、これらのイベントがそこでサポートされているかどうかは(私の目的では)本当に重要です。
解決
.on()
を使用して、あらゆる種類のイベントを追加および削除できます。 および off()
メソッド
たとえば、これを試してください
jQuery(document).on('paste', function(e){ alert('pasting!') });
jQueryは、実際には、割り当てるイベントタイプがブラウザでサポートされているかどうかにはまったく関係がないため、次のような要素(および一般的なオブジェクト)に任意のイベントタイプを割り当てることができます。
jQuery('p').on('foobar2000', function(e){ alert(e.type); });
カスタムイベントタイプの場合、 .trigger()
それらを「手動で」次のようにコードで:
jQuery('p').trigger('foobar2000');
きちんとしたええ?
さらに、プロプライエタリ/カスタムDOMイベントをクロスブラウザー互換の方法で使用するには、「jQueryイベントプラグイン」を使用/作成する必要があります。 ...その例は、 jquery.eventにあります。 wheel.js Brandon Aaronのマウスホイールプラグイン
他のヒント
Mozillaは" input"をサポートしています。有用なドキュメントを見つけるのに苦労しているイベント。少なくとも、ペーストで発火することは知っています。
this.addEventListener('input',
function(){//stuff here},
false
);
jQuery 1.7では、 bind(...)および unbind(...)メソッドを使用して、それぞれハンドラーをアタッチおよび削除できます。
ここにあなたの探求を調整する例があります:
$('#someElementId').bind('paste', function(){return false;});
-これは、クリップボードから要素本体への貼り付けをブロックします。イベントタイプとして cut 、 copy などを使用することもできます(以下のリンクを参照)
$('#someElementId').bind('copy', function(){return alert('Hey fella! Do not forget about copyrights!');});
したがって、他の場合では、これらのハンドラーを削除するときは、 unbind()メソッドを使用できます:
$('#someElementId').unbind('copy');
ここにいくつかの便利なリンク: