JSでのイベントモデルの例を詳しく解説
以前はイベントモデルが比較的明確で、多くの概念が私の頭の中で明確にマッピングされていました。仕事を始めた後、一方では制限を使用し、他方では、シンプルさは利便性を意味するフレームワークでのさまざまなイベント監視方法の使用に慣れてきましたが、時間が経つにつれて、イベントのいくつかの概念が私の記憶から消えていきました。私が C 言語ポインタ、マクスウェル方程式、行列変換、最小二乗法などを忘れ始めているのと同じです。知識は、単純なものから奥深いもの、奥深いものから理解へと進む道を切り開く色とりどりの石畳のようなもので、常にあなたがさらに先へ進むのに役立ちます。イベントモデルを振り返ってみましょう。
イベントには以下が含まれます:マウス イベントキーボード イベントフレーム イベント onerror onresize onscroll など
フォーム イベント onblur onfocus など
クリップボード イベント oncopy oncut onpaste
印刷イベント onafterprint onbeforeprint
drag アニメーション イベント ondrag ondragenter など
メディア イベント onplay onpause
アニメーション イベント animeend
トランジション イベント
その他のイベント など
イベントは、
ターゲット イベント オブジェクト
イベント リスニング オブジェクト
を含むオブジェクトにカプセル化されます。キーボード イベント オブジェクトなど。
それらには独自のプロパティとメソッドが含まれており、Event オブジェクトからも継承されます。それは W3C によって異なります。
一般的に使用されるメソッド:
event.PreventDefault()//リンクジャンプやフォーム送信などの要素のデフォルト動作を防止します
2. 3 種類のイベントモデル
1. オリジナルイベントモデル(DOMレベル0) 特徴: オリジナルイベントモデルにはイベント発生後の伝播の概念がなく、イベントフローも存在しません。インシデントが発生した場合は、直ちに対処します。 listen関数はあくまで要素の属性値であり、リスナーは要素の属性値を指定することでバインドされます。記述方法は2つあります:
HTML: js: document.getElementsById('btn').onclick = func
利点: すべてのブラウザ すべて互換性があります
欠点:
a. ロジックと表示が分離されていません
c. イベントバブリング、委任、その他のメカニズムを渡すことができません。
現在の Web プログラムやより複雑なロジックのモジュール開発では、この方法は明らかに時代遅れであるため、実際のプロジェクトでは推奨されません。通常はデモをいくつか書くだけで問題ありません。
2. IEイベントモデル
特徴: IEは、関数の実行が完了するとイベントオブジェクトをウィンドウの属性として設定します
。
リスニング関数をバインドして解放するメソッド: attachEvent("eventType","handler")。ここで、evetType は onclick などのイベントのタイプです。’on’ を追加するように注意してください。
イベントリスナーを無効にするメソッドは detachEvent("eventType", "handler" ); です。
欠点: IE 自体でしか使用できないため、冷たすぎます。
3. DOM2 イベントモデル
イベントモデルは、W3C Level 2 DOM イベント、つまり DOM2 イベントモデルで標準化されています。最新のブラウザ (IE9 以前は除く) はすべてこの仕様に従っています。
特徴:
a. イベント キャプチャ フェーズ。このプロセス中に、イベントはドキュメントからターゲット要素まで伝播され、渡されたノードが順番にチェックされ、イベントのリッスン関数が登録されているかどうかが確認され、登録されている場合は実行されます。 b. イベント処理段階。イベントが対象要素に到達すると、対象要素のイベント処理関数が実行されます c. イベントバブリングステージ。イベントはターゲット要素からドキュメントに到達するまで発生し、通過するノードがイベントのリスニング関数を登録しているかどうかもチェックします。登録されている場合は、それを実行します。
注:
すべてのイベント タイプはイベント キャプチャ フェーズを通過しますが、一部のイベントのみがイベント バブリング フェーズを通過します。たとえば、
submit イベントはバブルされません。
リッスン関数をバインドして解放するメソッド:
addEventListener("eventType", "handler", "true|false"); ここで、eventType はイベント タイプを指します。 注
'on' プレフィックスを追加しないでください。 IEとは異なります。
3番目のパラメータは、キャプチャフェーズで真のキャプチャフェーズに入るかどうかを指定するために使用され、バブリングフェーズでのみfalseになりますリスナーのリリースも同様です:removeEventListner("eventType") ,"handler","true !false");
var a = document.getElementById('XXX'); if(a.attachEvent){ a.attachEvent('onclick',func); } else{//IE9以上和主流浏览器 a.addEventListener('click',func,false); }
现有的框架和类库都会对适应各种浏览器做兼容性的封装,JQuery底层即使用了上面的兼容性写法。
三、事件的捕获-冒泡机制
DOM2标准中,一次事件的完整过程包括三步:捕获→执行目标元素的监听函数→冒泡,在捕获和
冒泡阶段,会依次检查途径的每个节点,如果该节点注册了相应的监听函数,则执行监听函数。
以如下HTML结构为例子,执行流程应该是这样的:
<div id="parent"> 父元素 <div id="child">子元素</div> </div>
运行一下一目了然。
var parent= document.getElementById('parent'); console.dir(parent); var child = document.getElementById('child'); parent.addEventListener('click',function(){alert('父亲在捕获阶段被点 击');},true);//第三个参数为true child.addEventListener('click',function(){alert('孩子被点击了');},false); parent.addEventListener('click',function(){alert('父亲在冒泡阶段被点击 了');},false);//第三个参数为false
可以看到,第三个即用来指定是否在捕获阶段进 true捕获阶段,false没有捕获阶段 。
如果不想让事件向上冒泡,可以在监听函数中调用event.stopPrapagation()来完成,后面会有应
用的栗子。
四、事件委托机制
委托就是把事件监听函数绑定到父元素上,让它的父辈来完成事件的监听,这样就把事情“委托
”了过去。在父辈元素的监听函数中,可通过event.target属性拿到触发事件的原始元素,然后
再对其进行相关处理。
五、jQuery中的事件监听方式
jQuery中提供了四种事件监听方式,分别是bind、live、delegate、on,对应的解除监听的
函数分别是unbind、die、undelegate、off。这几个方法已经对各种浏览器的兼容性进行封装。
具体方法可以查看手册。
注意几点:
jQuery推荐事件的绑定都使使用on方法
jQuery默认事件不在捕获中进行
六、什么是自定义事件
张鑫旭的《js-dom自定义事件》
七、一个简单例子
点击弹窗之外任何地方,弹框关闭。
方法:给body绑定事件,在事件的执行函数里关闭弹框;
给弹框元素绑定点击事件,在事件的执行函数里面组织事件冒泡,即:
event.stopPrapagation();
以上がJSでのイベントモデルの例を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









従来のコンピューティングを超える能力を備えているだけでなく、より低コストでより効率的なパフォーマンスを実現する人工知能モデルを想像してみてください。これは SF ではありません。世界で最も強力なオープンソース MoE モデルである DeepSeek-V2[1] が登場しました。 DeepSeek-V2 は、経済的なトレーニングと効率的な推論の特徴を備えた強力な専門家混合 (MoE) 言語モデルです。これは 236B のパラメータで構成されており、そのうち 21B は各マーカーをアクティブにするために使用されます。 DeepSeek67B と比較して、DeepSeek-V2 はパフォーマンスが優れていると同時に、トレーニング コストを 42.5% 節約し、KV キャッシュを 93.3% 削減し、最大生成スループットを 5.76 倍に高めます。 DeepSeek は一般的な人工知能を研究する会社です

AI は確かに数学を変えつつあります。最近、この問題に細心の注意を払っている陶哲軒氏が『米国数学協会会報』(米国数学協会会報)の最新号を送ってくれた。 「機械は数学を変えるのか?」というテーマを中心に、多くの数学者が意見を述べ、そのプロセス全体は火花に満ち、ハードコアで刺激的でした。著者には、フィールズ賞受賞者のアクシャイ・ベンカテシュ氏、中国の数学者鄭楽軍氏、ニューヨーク大学のコンピューター科学者アーネスト・デイビス氏、その他業界で著名な学者を含む強力な顔ぶれが揃っている。 AI の世界は劇的に変化しています。これらの記事の多くは 1 年前に投稿されたものです。

Google が推進する JAX のパフォーマンスは、最近のベンチマーク テストで Pytorch や TensorFlow のパフォーマンスを上回り、7 つの指標で 1 位にランクされました。また、テストは最高の JAX パフォーマンスを備えた TPU では行われませんでした。ただし、開発者の間では、依然として Tensorflow よりも Pytorch の方が人気があります。しかし、将来的には、おそらくより大規模なモデルが JAX プラットフォームに基づいてトレーニングされ、実行されるようになるでしょう。モデル 最近、Keras チームは、ネイティブ PyTorch 実装を使用して 3 つのバックエンド (TensorFlow、JAX、PyTorch) をベンチマークし、TensorFlow を使用して Keras2 をベンチマークしました。まず、主流のセットを選択します

Boston Dynamics Atlas は正式に電動ロボットの時代に突入します!昨日、油圧式アトラスが歴史の舞台から「涙ながらに」撤退したばかりですが、今日、ボストン・ダイナミクスは電動式アトラスが稼働することを発表しました。ボストン・ダイナミクス社は商用人型ロボットの分野でテスラ社と競争する決意を持っているようだ。新しいビデオが公開されてから、わずか 10 時間ですでに 100 万人以上が視聴しました。古い人が去り、新しい役割が現れるのは歴史的な必然です。今年が人型ロボットの爆発的な年であることは間違いありません。ネットユーザーは「ロボットの進歩により、今年の開会式は人間のように見え、人間よりもはるかに自由度が高い。しかし、これは本当にホラー映画ではないのか?」とコメントした。ビデオの冒頭では、アトラスは仰向けに見えるように地面に静かに横たわっています。次に続くのは驚くべきことです

今月初め、MIT やその他の機関の研究者らは、MLP に代わる非常に有望な代替案である KAN を提案しました。 KAN は、精度と解釈可能性の点で MLP よりも優れています。また、非常に少数のパラメーターを使用して、多数のパラメーターを使用して実行する MLP よりも優れたパフォーマンスを発揮できます。たとえば、著者らは、KAN を使用して、より小規模なネットワークと高度な自動化で DeepMind の結果を再現したと述べています。具体的には、DeepMind の MLP には約 300,000 個のパラメーターがありますが、KAN には約 200 個のパラメーターしかありません。 KAN は、MLP が普遍近似定理に基づいているのに対し、KAN はコルモゴロフ-アーノルド表現定理に基づいているのと同様に、強力な数学的基礎を持っています。以下の図に示すように、KAN は

テスラのロボット「オプティマス」の最新映像が公開され、すでに工場内で稼働可能となっている。通常の速度では、バッテリー(テスラの4680バッテリー)を次のように分類します:公式は、20倍の速度でどのように見えるかも公開しました - 小さな「ワークステーション」上で、ピッキング、ピッキング、ピッキング:今回は、それがリリースされたハイライトの1つビデオの内容は、オプティマスが工場内でこの作業を完全に自律的に行い、プロセス全体を通じて人間の介入なしに完了するというものです。そして、オプティマスの観点から見ると、自動エラー修正に重点を置いて、曲がったバッテリーを拾い上げたり配置したりすることもできます。オプティマスのハンドについては、NVIDIA の科学者ジム ファン氏が高く評価しました。オプティマスのハンドは、世界の 5 本指ロボットの 1 つです。最も器用。その手は触覚だけではありません

目標検出は自動運転システムにおいて比較的成熟した問題であり、その中でも歩行者検出は最も初期に導入されたアルゴリズムの 1 つです。ほとんどの論文では非常に包括的な研究が行われています。ただし、サラウンドビューに魚眼カメラを使用した距離認識については、あまり研究されていません。放射状の歪みが大きいため、標準のバウンディング ボックス表現を魚眼カメラに実装するのは困難です。上記の説明を軽減するために、拡張バウンディング ボックス、楕円、および一般的な多角形の設計を極/角度表現に探索し、これらの表現を分析するためのインスタンス セグメンテーション mIOU メトリックを定義します。提案された多角形モデルの FisheyeDetNet は、他のモデルよりも優れたパフォーマンスを示し、同時に自動運転用の Valeo 魚眼カメラ データセットで 49.5% の mAP を達成しました。

前に書かれたプロジェクトのリンク: https://nianticlabs.github.io/mickey/ 2 枚の写真が与えられた場合、それらの写真間の対応関係を確立することで、それらの間のカメラのポーズを推定できます。通常、これらの対応は 2D 対 2D であり、推定されたポーズはスケール不定です。いつでもどこでもインスタント拡張現実などの一部のアプリケーションでは、スケール メトリクスの姿勢推定が必要なため、スケールを回復するために外部深度推定器に依存します。この論文では、3D カメラ空間でのメトリックの対応を予測できるキーポイント マッチング プロセスである MicKey を提案します。画像全体の 3D 座標マッチングを学習することで、相対的なメトリックを推測できるようになります。
