お蔵入り

フォームなどのテキストエリア上で、マウスによって何らかのオブジェクト(文字列とか)が「右クリック→貼り付け」によって貼り付けられた瞬間に特定の関数を実行したい.

フォームなどのテキストエリア上で、マウスによって何らかのオブジェクト(文字列とか)が「右クリック→貼り付け」によって貼り付けられた瞬間に特定の関数を実行したいのですが、どうしたらよいでしょうか?

2006-04-22 09:36の質問
この質問は、30日間解決しなかったために自動的に質問が一旦閉じられました。
Ads By Google

回答(1)

1.

2006-04-22 18:49:38
一般的なイベントではありませんが、IEの場合は、
onbeforepaste イベントが使えると思います。
http://msdn.microsoft.com/library/default.asp?url=...
自信度 : 自信なし 回答レベル : 回答
Ads By Google

コメント(3)

2006-04-22 13:55:19

「ブラウザで」ということでいいのでしょうか。。。
JSだと一般に、質問の要求そのままで実現するのは難しいのではないかと・・・たぶん(汗;

Ctrl+Vを禁止するだけなら、

onKeyDown="if(event.ctrlKey==true && event.keyCode==86)return false;"
とかすればいいかもしれません。

IEだと、貼り付けを捕捉する代わりに、クリップボードを読み取ることができるかもしれません。
clipboardData.getData("Text")
でクリップボードのテキストデータが返ってくるので、onChangeとかされたときに、inputのvalueを検索して、クリップボードと同じ文字列があれば「貼り付け」をしたと解釈できるかもしれません。ただし、IEのセキュリティ設定で「スクリプトによる貼り付け」許可がないとできません。

//VBならWM_PASTEで拾えるかと思います。

2006-04-22 20:46:10

>>1
そんなものが!
早速試したんですが、編集メニュー押しただけで呼び出されたりして、ちょっと挙動不審ですw
確かに、ペースト時にも呼び出されるのですが・・・。

「onpaste」の方が快適な気がします。

#3.  BLUEPIXY
2006-04-23 02:35:50

>>2
>編集メニュー押しただけで呼び出されたりして
うわぁほんとだ!
なんぼbefore でも過敏過ぎな感じですね。
右クリックもだし
(クリップボードにデータがあるとってことみたいですね)
貼り付けられる前の方がよかろうと思ったのですが、
onpaste で、貼り付けられる前にイベントハンドラが呼び出される(キャンセルできる)から
同じことならonpaste で良いですね。

トラックバック

トラックバックURL: