• 締切済み

javascriptのイベント処理につきまして

左クリックをした時と、クリックを解除をした時 右クリックをした時と、クリックの解除をした時 クリックを解除した時は共通の処理を行います。 左クリックをした時と、右クリックをした時の処理は分けたいと思っているのですが、上手くいきません。ご教授願えますでしょうか・・・。 [ mousedownとmouseup ] この場合、クリックした瞬間にmousedownイベントが走り、クリックを上げた瞬間にmouseupイベントができます。 ただし、右クリックでも同様の処理が走ってしまいます。 [ contextmenu と onclick ] 上記を利用すると、右クリックはcontextmenu処理を行い、左クリックはonclick処理を行いますが、この2つのイベントはマウスが押されて離された瞬間にイベントが発生しますので、mouseup処理が先に処理してしまします。 よろしくお願い致します。

みんなの回答

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.3

こんなんでどうでしょう <script type="text/javascript"> function Handler(event){  switch(event.type){   case 'mousedown':    switch(event.button){    case 0:alert("左ボタンが押された");return;    case 1:alert("右ボタンが押された");return;    }    return;   case 'mouseup':    alert('解除された');    return;  } }  document./*@cc_on @if (@_jscript_version > 5.8)   addEventListener(   @elif (@_jscript_version <= 5.8)   attachEvent( 'on'+  @else@*/  addEventListener( /*@end@*/  'mousedown',Handler,false);  document./*@if (@_jscript_version > 5.8)   addEventListener(   @elif (@_jscript_version <= 5.8)   attachEvent( 'on'+  @else@*/  addEventListener( /*@end@*/  'mouseup',Handler,false); </script>

  • think49
  • ベストアンサー率59% (285/482)
回答No.2

MouseEvent#button でクリックされたマウスボタンを判定できます。 http://www.y-adagio.com/public/standards/tr_dom2_events/events.html#Events-MouseEvent

noname#212058
noname#212058
回答No.1

mousedown イベントを受ける function の引数で、左クリックか 右クリックかを判別して処理を分岐すれば良いのでは? ここので 『右クリックでは動くけど、左クリックでは動かない』 例が載ってるよ。 http://www.red.oit-net.jp/tatsuya/java/event.htm

関連するQ&A

  • TabStripのイベントについて

    VB6にて開発しています。 VB.NETと違い、VB6の[TabStrip]には各ページにコンテナが用意されていません。 そこで、[PictureBox]をコンテナにして、実行時の[Crick]イベントにて [SelectedItem.Index]を参照し、[Visible]プロパティを切り替えて使用しています。 しかしここでひとつ不具合が起こります。 タブをクリック(押下)したままドラッグしてフォーム外でドロップすると、 タブ自体は切り替わりますが、[Crick]イベントが発生しません。 [TabStrip]の[MouseUp]イベント時に[Crick]イベントをコールするという方法で 回避しています。 ですが、そもそも一般のタブは(例えば画面のプロパティ等のタブ) マウスを押した(押下)時点でページが変わります。 これを実現したく、思考錯誤しています。 [Crick]イベントでは、マウスを押して放した時にイベントが発生します。 マウスを押した(押下)時点で切り替えるには、必然的に[MouseDown]時に [Visible]プロパティを切り替えなければいけないと思うのです。 が、イベントの発生順序は[MouseDown]→[Crick]→[MouseUp]という順で発生する為、 どうしても[Crick]時に取得する[SelectedItem.Index]が[MouseDown]時に取得できず、 実現しません。 VB6でマウスを押した(押下)時のページ切り替えを実現する方法はないのでしょうか? [参考] Private Sub TabStrip1_Click() Dim i As Byte With Me For i = 0 To 8 .Picture1(i).Visible = False Next i i = .TabStrip1.SelectedItem.Index - 1 .Picture1(i).Visible = True End With End Sub

  • MouseDownとMouseMoveイベントで質問です。

    学校の課題の為VB6.0でマウスを使用したプログラムを作成しているのですが、 MouseDownイベントとMouseMoveイベントで解らないことがあるので、 知っているかた、お願いします。 マウスの右ボタンと左ボタンの区別をつけるにはどうしたらいいのでしょうか? 例えば「左の時は描画し、右の時は描画しない」と言う感じで… わからなくて困っています。ぜひ、お願いします。

  • マウスイベントが発生しません

    マウスイベントに詳しい方教えて下さい。 Windows上のプログラミングで TImageコンポーネント上でマウスを左クリックさせると、 通常はOnMouseDown→OnClick→OnMouseUpの順で イベントが発生します。 ただ、たまにOnMouseUpイベントが発生せず エラーが発生してしまう事が起こってしまいました。 常に起こるわけではなく、何かのタイミングで起こります。 ただ、何が原因かは全然つかめていません・・・。 OnMouseUpイベントをキャンセルしてしまう 処理って存在するのでしょうか? 特にPeekMessageなどは使用していません。 もし、以上のような事が起こる原因をご存知の方、 お教え願えますか? よろしくお願い致します。

  • 【JS】マウスでコピペした時にイベントをおこす方法

    JavaScriptに関して質問です。 マウスでコピペした時にイベントをおこす方法はありますでしょうか。 単にクリックしただけならonclickでいいのですがマウスでコピペとなると 右クリック > 貼り付け の時点でイベントを起こさなければなりません。 よってoncontextmenuも使えません。 何かいい方法はありますでしょうか。 よろしくお願いいたします。

  • コンテキストメニュークリック時のイベントハンドラ

    C#にてフォームアプリを作成しています。 そこでツリービューに表示されたノードを右クリックしたときにコンテキストメニューが表示される ように下記のように記述しました。表示されたノードの上で右クリックすると「Export」、「Import」 というメニューが表示されます。 しかし、イベントハンドラの書き方がよくわかりません。 「Export」又は「Import」がクリックされたというイベントはどう検出すればよいでしょうか。 // ノード右クリック時の動作 private void treeView1_MouseDown(object sender, MouseEventArgs e) { // 右クリックでもノードを選択させる if (e.Button == MouseButtons.Right) { // ノードの選択 treeView1.SelectedNode = treeView1.GetNodeAt(e.X, e.Y); // コンテクストメニューの作成 ContextMenuStrip contextMenu = new ContextMenuStrip(); ToolStripMenuItem openLabel = new ToolStripMenuItem(); openLabel.Text = "Export"; ToolStripMenuItem deleteLabel = new ToolStripMenuItem(); deleteLabel.Text = "Import"; contextMenu.Items.Add(openLabel); contextMenu.Items.Add(deleteLabel); // ツリービューにコンテキストメニューを追加 treeView1.ContextMenuStrip = contextMenu; } }

  • VBのイベント処理について

    お世話になります。 VB6.0のイベント処理について教えてください。 VB.NETでは、イベント処理のメソッド(VBだとプロシージャですか) のシグニチャのおしりに Handles Button1.Click という記述がされているので、このメソッドはButton1のクリックという イベントが発生したときに行われる処理だなと見当がつくのですが、 VB6.0ではその記述をしないのが一般的とみました。 してそのときに、このメソッドがButton1のクリック時のイベントだと いうのは、どのように判断されるのですか?メソッド名が Button1_Click みたいに勝手につけられるので、それで判断されるのですか?という ことはメソッド名を変えたらそのメソッドはButton1のクリック時の イベント処理メソッドではなくなってしまうのですか? よろしくご教授ください。

  • シートのクリックイベントは拾えないのか?

    ExcelのVBAに関する質問です。 さきほど「セルをクリック、またはダブルクリックしたときに○○したい」という質問に回答したのですが、「セルをクリックした」というイベントを拾う方法がわからず、ダブルクリックのパターンで回答しました。 Worksheetのイベントには BeforeDobuleClick や BeforeRightClick はあるのに Click や onClick というイベントがありません。オートシェイプなどのオブジェクトやフォーム上のオブジェクトには Click イベントがあるのですが、Worksheet になぜかありません。 これまでも同様のケースがあり、ネットで検索したりしたのですが、どれも SelectionChange で代用するものでした。それだと確かにマウスで別セルを選択したときにイベントが発生しますが、 ・キーボード操作でセルを移動してもイベントが発生する ・現在選択しているセルをクリックしてもイベントが発生しない と、厳密はマウスでクリックしたときと同じ動作になりません。 確か以前の質問で「あるセルをクリックするたびに、他のセルの値をカウントアップしたい」というようなものもありました。このような場合には、やはり Click に相当するようなイベントで処理したいです。 どうにかしてWorksheetでクリックイベントを拾うことはできないのでしょうか?

  • マウスをクリックしたときのイベント

    VisualC++2010のButton Controlのイベントについて 「BN_CLICKED」イベントはマウスをクリックして、放した時に発生します。 クリックしたときのイベントは取れないのでしょうか? *設定時間、押しっぱなしで、次の処理に移るというプログラムを書きたいため  悩んでいます。

  • スプレッドシートのチェックボックスのイベント

    スプレッドシートのチェックボックで クリックされた時のイベントを取得したいのですが、 同じセルで連続でクリックした場合 ClickイベントやMouseDownイベントで イベント処理をしようとしても、 最初の1回目だけで、2回目はイベントが取得できません。 どうやれば、2回目以降もイベントを取得できるか ご存知の方がいましたら教えて下さい。 よろしくお願いします。 環境は、VB6.0+SPREAD 3.0です。

  • 右クリックイベント

    Windows XP、Access2000での開発で、サブフォーム上のテキストボックスを右リックすると (普通のクリックではなく、あえて右クリック)、 別のフォームが表示される処理を作ろうとしています。 VBAのコードを Private Sub テキストボックス名_mousedown(Button As Integer, Shift As Integer, X As Single, Y As Single)  If Button = acRightButton Then  DoCmd.OpenForm "フォーム名"  End If End Sub としているのですが、これだとマウスを離してしまうと、画面が閉じてしまいます。 普通のクリックでのイベントと同じように、右クリックで別のフォームを表示するにはどうしたらよいでしょうか? 初心者です。 どなたか分かる方教えてください!!