問題タブ [event-handling]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - SOFの新しい投稿で、「Grippie」のような「onclick」なしでJavascript関数を実行するにはどうすればよいですか。
質問や回答を投稿するときonclick
のStackOverflowの>のように、SOFの新しい投稿で「Grippie」のようなものなしでJavascript関数を実行するにはどうすればよいですか?<div class="grippie" style="margin-right: 59px;"/
可動エッジを知らせる素敵なCSSカーソルを取得しましたが、「グリッピー」をクリックしたことを確認してフィールドのサイズを変更するJavaScriptはどのようになっていますか?
編集: jQueryにつながり、ハンドラーを説明する回答をありがとうございます。次のように、要素がいつクリックされるかを決定するハンドラーを簡単に使用できますか?
またはしかしこれはうまくいくかもしれませんか?
javascript - onclick メソッドをアクティブにする偽の「クリック」
onclickメソッドを持つ要素があります。
別の関数内でそのメソッドをアクティブ化 (または、この要素のクリックを偽造) したいと思います。
これは可能ですか?
event-handling - Linux/Xorg/Qt4/Kde4 でマウスまたはキーボードのアクティビティを検出する簡単な方法はありますか?
Linux、Xorg、Qt4、または Kde4 環境でマウスまたはキーボードのアクティビティを検出する簡単な方法はありますか? 明らかに、特定のウィンドウだけでなく、Xorg デスクトップ全体で。
javascript - イベント登録のjavascriptでhtmlリスト項目オブジェクトを適切に参照する
たとえば、次のhtmlリストがある場合、リストアイテムオブジェクトを参照する方法を知りたいです
一意の elementId を持たなくても、onclick を Item2 li に登録するにはどうすればよいでしょうか。
私の目標は、最終的には、リスト オブジェクト番号に基づいて一意のパラメーターを持つリスト オブジェクトの数について、各リスト オブジェクトに関数を割り当てることです。
c# - イベントが一度だけサブスクライブされるようにする方法
インスタンスのイベントに対して、特定のクラスで 1 回だけサブスクライブするようにしたいと考えています。
たとえば、次のことができるようにしたいと考えています。
そのようなガードを実装するにはどうすればよいですか?
c# - イベント処理に匿名デリゲートを使用する場合のガベージ コレクション
アップデート
ここからのさまざまな回答を組み合わせて、新しい質問に対する「決定的な」回答を作成しました。
元の質問
私のコードには、アプリケーションの存続期間全体にわたって存在するイベント パブリッシャーがあります (ここでは必要最小限に縮小されています)。
このパブリッシャーはあらゆる場所で使用できるため、すべてのサブスクライバーで処理コードを書き直さなくても済むように、この小さなヘルパー クラスを作成できたことに非常に満足しています。
小さなマシンで使い始めるまでは問題なく動作していましたが、時折発生するようになりました。
結局のところ、サブスクライバー コントロールが動的に作成、追加、およびフォームから削除されるコード内の場所が 1 つあります。ガベージ コレクションなどについての高度な理解 (つまり、昨日まで何もなかった) を考えると、ほとんどの場合、サブスクライバーもアプリケーションの存続期間中存続するため、後片付けをするとは思いもしませんでした。
私はしばらくの間、Dustin Campbell の WeakEventHandlerをいじりましたが、匿名のデリゲートでは機能しません(とにかく私にとってはそうではありません)。
とにかくこの問題はありますか?ショップ全体で定型コードをコピーして貼り付ける必要はありません。
(ああ、わざわざコントロールを作成したり破棄したりする理由を私に尋ねることは気にしないでください。それは私の設計上の決定ではありません...)
(PS: これは winforms アプリケーションですが、VS2008 と .Net 3.5 にアップグレードしました。Weak Event パターンの使用を検討する必要がありますか?)
(PPS:Rory からの良い答えですが、誰かが WeakEventHandler に相当するものを思いつくことができれば、明示的に UnLink/Dispose することを覚えておく必要がなくなります。それはクールです...)
編集問題のコントロールを「リサイクル」することで、この問題を回避したことを認めなければなりません。ただし、使用していた「キー」が明らかに一意ではないため、回避策が戻ってきて私を悩ませています(すすり泣く)。ここで他のリンクを発見しました(これを試してみました-少し弱すぎるようです-ターゲットがまだ生きていてもGCはデリゲートをクリアします。以下のs、oɔɯǝɹの回答と同じ問題です)、ここ(パブリッシャーを変更する必要があり、そうではありません匿名のデリゲートでは実際には機能しません) およびhere (Dustin Campbell による不完全として引用)。
私が探しているものは意味的に不可能かもしれないと思います.クロージャーは「私がいなくなった後でもぶらぶらする」ように設計されています.
私は別の回避策を見つけたので、神々からの声を待って、それを使い続けます.
javascript - MVCで循環イベントを防ぐためのエレガントな方法は?
簡単に言うと、質問です。
MVCでは、チェックボックスのクリック(または選択ボックスまたはリストボックスの変更)と人間の意味での「コントローラー、モデルの変更」と、チェックボックスのクリック(または選択ボックスまたはリストボックスの変更)とコントローラーの意味での「私」をどのように区別しますかmモデルが変更されたため、ビューを更新しますか?」
例:
「Edges」で接続された「Vertices」の概念を持つJSアプリ(すべて1つの大きなHTML + JSページ。背後にサーバーがあり、AJAXが実行されていますが、例では重要ではありません)があります。UIを使用すると、マップ上の頂点を追加および削除したり、頂点のペア間のエッジを有効または無効にしたりできます。
頂点Aから頂点Bへのエッジを無効にする方法は2つあります。
- エッジをクリックして、[エッジの詳細]ウィンドウに[このエッジを無効にする]ボタンを表示します。また
- 頂点A(またはB)をクリックして、[頂点の詳細]ウィンドウに近くの頂点のチェックリストを表示し、そこから頂点B(またはA)のチェックを外すことができます。
これがMVCの内部でどのように機能するかを示します(ただし、私の理解の問題を修正する更新については、この投稿の最後を参照してください):
- モデル:頂点オブジェクトのリストとエッジオブジェクトのリスト。
- ビュー:マーカーとポリラインに加えて、チェックボックスとボタン、および「頂点の詳細」と「エッジの詳細」のDIVを備えたGMapsUI。
- コントローラ:
- チェックボックスとボタンのイベントが発生したときにモデルを更新するJS関数。と
- モデルのイベントが発生したときにビューを更新するJS関数。
これが特定の優雅さです:
- ユーザーは、頂点Aに焦点を合わせた頂点詳細ウィンドウと頂点Aから頂点Bへのエッジに焦点を合わせたエッジ詳細ウィンドウを持っています。
- ユーザーは、[エッジの詳細]ウィンドウで[このエッジを無効にする]をクリックします。
- コントローラ関数1はクリックイベントを取得し、Edgeモデルオブジェクトでdisable()を呼び出します。
- Edgeモデルオブジェクトは、「Ijustgetdisabled」イベントを発生させます。
- コントローラ機能2は、「無効になりました」イベントを受け取り、
- エッジ詳細ウィンドウを再描画して、「無効になっています!」と表示します。と
- [頂点の詳細]ウィンドウで[頂点B]のチェックを外します。
- くだらない!これにより、エッジが無効になったことを意味するUIイベントをリッスンしていたコントローラー関数1が再度起動されます。
そのため、モデルの不要な再更新とビューの再更新があります。イベントを発生させるイベントを発生させるイベントを含むより複雑なビューでは、これにより、数十の無関係な更新が行われる可能性があります。
更新:素晴らしい答え。
私はMVCを少し誤解しました。上で説明したように、ビューは1つだけではありません。複数のモデルに複数のビューがあります。特に、特定のノードに対するチェックボックスリストのエッジのビューと、別の「詳細なウィンドウスタイル」のエッジのビューがあります。
さらに、モデルが変更されたときにすべてのビューを更新する1つのコントローラー関数を使用するべきではありません。モデルが変更されたときに、各ビューはそれ自体を変更する必要があります。
したがって、各ビューがモデルの「状態更新」イベントに登録され、各ビューがそれらのイベントの受信時にそれ自体を更新する場合、私の循環イベントの質問に対する答えは単純に次のようになります。
チェックボックスリストビューは、モデルの状態が変更された後にチェックボックスを更新している間、チェックボックスイベントを無効にします。
これで、ユーザーが[エッジの詳細]ウィンドウでエッジを無効にすると、コントローラーがエッジモデルを更新し、チェックボックスリストビューが更新の通知を受け取り、チェックボックスリストビューがスマートで、チェックボックスイベントを消音してステータスを変更します。適切なチェックボックス。
これは、1つのコントローラーがすべてのビューを更新する元のソリューションよりもはるかに口当たりが良く、ループを回避するために特別な注意とフィードが必要なビューを知る必要があります。代わりに、厄介なUI要素を持つ単一のビューだけが問題に対処する必要があります。
私の質問に答えてくれた人たちに感謝します!
java - JTable 選択変更イベント処理: ソース テーブルを動的に検索します
独自のイベント ハンドラーを実装し、それをテーブルの選択モデルに追加しました。
そして、「イベント」のメソッドを実装しました(上記):
残念ながら、e.getSource が javax.swing.DefaultListSelectionModel を提供しているため、選択した可能性があり、関連付けられたテーブルを見つけることができない場合、イベントが 2 回発生します。
したがって、私の質問は次のとおりです。
1) eventListener が 1 回しか登録されていないのに、なぜ 2 回起動するのですか?
2) 選択が適用されるテーブルを見つけるにはどうすればよいですか? DefaultListSelectionModel は getSource() などを提供していないようです。
どうもありがとう!
javascript - Javascript: 要素が document.body に追加されない限り、イベントは発生しません
イベント リスナーを登録する要素 (div) を JavaScript で動的に作成します。
ここで、この要素をドキュメントの本文に添付すると、次のようになります。
すべてが順調で、イベントがキャプチャされます。ただし、(配置目的で)この要素をページ内の(静的)サブ要素にアタッチしたい、例えば:
要素が生成され、正しく配置されますが、onclick イベントはキャプチャされなくなりました。何かご意見は?これは X ブラウザーなので、何かが欠けているに違いありません。
ありがとう、ドン。
qt - QWidget に EventFilter をインストール (qt4.4.3/kde4)
K* ウィンドウがあり、その中にイベントをフィルター処理する必要があるウィジェットがあります。
たとえば、私はそれをクリックする可能性を望んでいません...
どうやってやるの?
イベントフィルタを使用する必要がありますか? この場合、どうするのが一番良いのでしょうか?
しかし、私の問題は、他のようなオブジェクトではなく、TerminalInterface->widget() であるため、ウィジェットをサブクラス化できないことです:\