web-dev-qa-db-ja.com

jQueryでoncut、oncopy、onpasteをどのように処理しますか?

jQuery documentation は、ライブラリに次のイベントのサポートが組み込まれていることを示します:blur、focus、load、resize、scroll、unload、click、dblclick、mousedown、mouseup、mousemove、mouseover、mouseout、mouseenter 、mouseleave、change、select、submit、keydown、keypress、keyup、およびerror。

切り取り、コピー、貼り付けのイベントを処理する必要があります。それを行うのに最適な方法は? FWIW、私はWebKitについて心配するだけです(幸運です!)。

更新:ダッシュボードのような環境で「ウィジェット」に取り組んでいます。 WebKitを使用しているので、これらのイベントがそこでサポートされているかどうかは(私の目的では)本当に重要なことです。

65
Andrew Hedges

.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 ブランドンアーロンの マウスホイールプラグイン

91
Már Örlygsson

Javascriptではさまざまなクリップボードイベントを使用できますが、サポートは不完全です。 QuicksMode.orgには 互換性グリッドテストページ があります。イベントはjQueryを介して公開されないため、ライブラリを拡張するか、ネイティブJavascriptイベントを使用する必要があります。

14
dansays

Mozillaは、役に立つドキュメントを見つけるのに苦労している「入力」イベントをサポートしています。少なくとも、ペーストで発火することは知っています。

   this.addEventListener('input',
    function(){//stuff here},
    false
   );
7
Josh Bush

JQuery 1.7として、bind(...)およびunbind(...)それぞれハンドラーをアタッチおよび削除するためのメソッド。

ここにあなたの探求を調整する例があります:

$('#someElementId').bind('paste', function(){return false;});

-これは、クリップボードから要素本体に貼り付けようとする試みをブロックします。また、cutcopyなどをイベントタイプとして使用できます(参照以下のリンク)

$('#someElementId').bind('copy', function(){return alert('Hey fella! Do not forget about copyrights!');});

そのため、他のケースでは、これらのハンドラーを削除するときに、unbind()メソッドを使用できます。

$('#someElementId').unbind('copy');

ここにいくつかの便利なリンク:

1
Yan Pak