IE11で、KeyboardEventでペースト操作を実現させたく、
試行錯誤の末に以下のコードに行きつきましたが、
シンタックスエラーにはならないものの動作しません。
cripboadData.getData(”text”)で取得した値をエレメントに設定する手もありますが、
今回は、JavaScriptで実施したペースト操作をイベントリスナでつかみたいので、
KeyboardEventでのペースト操作にこだわっている次第です。
そもそもKeyboardEventでペースト操作などできないものなのでしょうか?
ご教示のほどよろしくお願いします。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
<script type="text/javascript">
<!--
// ペーストされたことの確認のためのリスナ
document.getElementById('aaaaa').addEventListener("paste" , function(e){
alert("paste");
});
document.getElementById('aaaaa').focus();
var event = document.createEvent('KeyboardEvent'); // create a key event
event.initKeyboardEvent("keypress", // typeArg,
true, // canBubbleArg,
true, // cancelableArg,
null, // viewArg, Specifies UIEvent.view. This value may be null.
true, // ctrlKeyArg,
false, // altKeyArg,
false, // shiftKeyArg,
false, // metaKeyArg,
86, // keyCodeArg,
0); // charCodeArg);
document.getElementById('aaaaa').dispatchEvent(event);
-->
</script>
No.1ベストアンサー
- 回答日時:
こんにちは
イベントに詳しいわけではないのと、意図がイマイチよくわからないのですが・・・
>試行錯誤の末に以下のコードに行きつきましたが、
>シンタックスエラーにはならないものの動作しません。
ご提示のスクリプは、後半部分でkeypressイベントを発生させています。
これに対して、前半ではpasteイベントのリスナを設定しているので、このリスナが呼ばれることはないですよね?
リスナのイベントタイプをkeypressにして設定しておけば、当然、呼び出されます。
>そもそもKeyboardEventでペースト操作などできないものなのでしょうか?
イベントの発生と、実際の処理とは別のものです。
カスタムイベントとして定義することによって、pasteやpasteSpecialなどであっても、イベントを設定することは可能ですが、これが自動的に「いわゆるペースト処理」をしてくれるものを意味するわけではありません。
(単にカスタムに設けたイベントタイプの一種に過ぎないので)
それなので、そのイベントを発生させても、単純に、pasteイベントなどが発生するだけです。
例えば、リンク要素のクリックイベントにリスナを設定しておけば、クリック時に呼び出されますが、クリックイベントと「リンク先に遷移する処理」は別のものですよね?
マークアップの機能として「リンク要素をクリックしたら指定URLに遷移する」とされていて、この処理はブラウザのエンジンが別に処理をしています。
もしも、カスタムイベントで「何らかの処理」をさせたいということであるのなら、それこそリスナの処理の中にその処理を記述しておくということになるのではないでしょうか?
補足ですが、カスタムイベントを使用する際には、initEvent()等でイベントオブジェクトの初期化をしておく必要があるようです。
https://msdn.microsoft.com/ja-jp/library/ff97545 …
※ ご質問の意図がよくわからないので、思いつくままに記していますが、何かのご参考にでもなれば。
早速のコメントありがとうございます。
詳しくご教示いただきありがとうございます!
「イベントの発生と、実際の処理とは別のもの」、私の認識不足でもあったので大変参考になりました。だから実際にペースト処理が走らないのかもしれません。
ID:'aaaaa'(Input type='text')の要素に対してdispatchEventでCTRL+Vキー押下操作を実施したつもりだったので、その結果として'aaaaa'要素に対して「いわゆるペースト処理」が行われ、そのペースト処理のイベント発生を「addEventListener("paste"・・・」でハンドリングできるのではないかと考えた次第です。
ペーストのイベントは発生してもよさそうな気もしますが、そこはもう少し調べるとして、それをハンドリングできたら、ID:'aaaaa'要素に実際に値を設定する処理を実装する必要があるということがわかり一歩前進です。
ありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
追加ボタンを押した際に ok ボ...
-
jsonテキストデータの並び替え...
-
初心者です。gulpでコンパイル...
-
jQueryで同じクラス名のものを...
-
食材の期限を管理するためにGAS...
-
前回の質問の続き function mov...
-
このプログラムに、王手をかけ...
-
前回の質問の続き function mou...
-
このプログラムに王様の逃げ道...
-
ビデオのJSについて
-
鍵盤アプリで、スマホの画面に...
-
<div>のタッチ状態を維持したま...
-
jQueryでシンセサイザーを作っ...
-
プログラミング 学習
-
HTMLでサブフレームから親のス...
-
ジャバスクリプトについて。
-
プログラムについて。
-
Q&A掲示板の入力フォームに文字...
-
メールフォームの日付入力フォ...
-
二次元配列を使って順位をだす...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エラー(型が一致しません。)...
-
VB6でユーザー定義型がNothing...
-
TextChangeイベントが発生しない
-
LRESULTとHRESULT
-
ifdefとenum
-
#define 文
-
PHP + MySQL で登録時に重複チ...
-
【javaScript】KeyboardEventで...
-
fetchでreturnで戻り値
-
アクティブなウィンドウのみ、...
-
関数定義について質問です 架空...
-
isLoading:Boolean = trueの使い道
-
jQueryの関数内の変数について...
-
イベントリスナーの重複登録に...
-
VBS 名前定義の確認→ありかなし...
-
【JavaScript】イベント伝播の...
-
SWI-Prologの「OR」について...
-
setTimeoutでオブジェクト表示...
-
PHP requireの後にJS実行
-
即時関数で
おすすめ情報