国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

ホームページ ウェブフロントエンド jsチュートリアル JavaScriptでカスタムイベントを作成する方法

JavaScriptでカスタムイベントを作成する方法

Feb 25, 2025 am 11:51 AM

How to Create Custom Events in JavaScript

コアポイント

  • JavaScriptイベント処理はすべてのクライアントアプリケーションの基礎(chǔ)ですが、それらはDOM要素に関連付けられており、十分に柔軟ではない場(chǎng)合があります。 JavaScriptカスタムイベントこの問(wèn)題を解決し、柔軟性とメンテナンスの容易さを高めます。
  • JavaScriptの作成カスタムイベントの作成には、新しい
  • オブジェクトへのイベント名、詳細(xì)、オプションの渡しが含まれます。作成後、CustomEventメソッドを使用して、特定の要素でこのイベントを発送できます。 dispatchEvent
  • 複數(shù)のハンドラーがカスタムイベントを購(gòu)読できるため、イベントに基づいて異なるアクションを?qū)g行できます。 Chrome、Firefox、およびOperaはカスタムイベントをサポートしており、一部のJavaScriptライブラリもサポートを提供しています。
javaScriptイベント処理は、すべてのクライアントアプリケーションの基礎(chǔ)です。ターゲット要素(ボタンクリック、マウスの動(dòng)き、フォームの提出など)でイベントが発生すると、ハンドラー機(jī)能が実行されます。イベントオブジェクトがハンドラーに渡され、デフォルト操作をブロックするさまざまなプロパティと多くの方法を提供します。欠點(diǎn)の1つは、イベントがDOM要素に密接にリンクされていることです。ユーザーのコメントを受け入れる?yún)g純なフォームを考えてみましょう:

<label for="msg">你的留言</label><input type="text" id="msg"><button type="submit" form="msgbox">發(fā)送</button>
<form id="msgbox"></form>
フォームを送信するとき、畫面にメッセージをエコーするためにハンドラーを書くことができます。たとえば

ツイートとしてメッセージを送信したり、サーバーに保存したり、他のアクションを?qū)g行したりする場(chǎng)合はどうなりますか?既存のイベント委任方法には、2つのオプションがあります。
document.getElementById("msgbox").addEventListener("submit", function(e) {
    e.preventDefault();
    var msg = e.currentTarget.getElementById("msg").value.trim();
    if (msg) {
        alert(msg);
    }
}, false);

既存のハンドラーにさらにコードを追加します。 機(jī)能が追加、変更、または削除されるたびに、ハンドラー機(jī)能を更新およびテストする必要があるため、これは十分に柔軟ではありません。投稿されたメッセージには數(shù)十の用途があり、それらをすべて同じコードブロックに適用しようとしています。
  1. 目的ごとにイベントハンドラーを増やします。 これにより、よりエレガントなコードが生成されますが、メンテナンスの問(wèn)題が発生します。まず、各関數(shù)は、メッセージを抽出および検証するために同様の操作を?qū)g行する必要があります。フォームを変更する必要がある場(chǎng)合はどうなりますか? IDを変更するだけで、各サブスクライバーのイベント処理コードを変更する必要があります。
  2. 有効なメッセージを投稿するときに、カスタム「NewMessage」イベントを単にトリガーできればいいのに、いいことではないでしょうか?特定のフォームノードを參照する代わりに、

    または
  3. タグを監(jiān)視できればさらに良いでしょう。カスタムイベントにより、これを行うことができます。カスタムイベントのトリガーは簡(jiǎn)単です。
この例では、「NewMessage」はカスタムイベントタイプです。 2番目のパラメーターは、3つの屬性を持つオブジェクトです。
  • detail:イベントに関するカスタム情報(bào)を提供する子オブジェクト。この例では、メッセージと時(shí)間を追加しました。
  • bubbles:もしtrueの場(chǎng)合、イベントはイベントをトリガーした要素の祖先に泡立ちます。
  • cancelabletrueの場(chǎng)合は、イベントオブジェクトのstopPropagation()メソッドを使用してイベントをキャンセルできます。

次に、特定の要素でこのイベントを派遣する必要があります。

<label for="msg">你的留言</label><input type="text" id="msg"><button type="submit" form="msgbox">發(fā)送</button>
<form id="msgbox"></form>
次のコードを使用して、このイベントを購(gòu)読できます。

document.getElementById("msgbox").addEventListener("submit", function(e) {
    e.preventDefault();
    var msg = e.currentTarget.getElementById("msg").value.trim();
    if (msg) {
        alert(msg);
    }
}, false);
デモページ

この例は、テクニックを示しています。カスタムイベントデモページを表示します。標(biāo)準(zhǔn)のイベントハンドラーは、上記のHTMLフォームの提出を探します。この関數(shù)は現(xiàn)在のメッセージを取得し、それが有効であると仮定すると、新しい「NewMessage」イベントが派遣されます。

ハンドラーは、「NewMessage」イベントを購(gòu)読できるようになりました。イベントは、有効なメッセージが存在する場(chǎng)合にのみトリガーされ、
var event = new CustomEvent(
    "newMessage", 
    {
        detail: {
            message: "Hello World!",
            time: new Date(),
        },
        bubbles: true,
        cancelable: true
    }
);

に設(shè)定されているため、イベントはフォームまたはルートbubblesなどの祖先に適用できます。 > true メッセージ自體は、イベントオブジェクトのdocument屬性から抽出できます。

document.getElementById("msgbox").dispatchEvent(event);

ブラウザー互換性detail.message執(zhí)筆時(shí)點(diǎn)で、Chrome、Firefox、およびOperaサポート

オブジェクト。 Safariの夜間バージョンで利用できるため、そのブラウザですぐに利用できるようになります。このオブジェクトは、IE9以下ではサポートされていません。幸いなことに、いくつかのJavaScriptライブラリはカスタムイベントデリゲートをサポートしているため、SitePointをご期待ください。

(擬似オリジナルの目標(biāo)と一致せず、長(zhǎng)すぎるため、FAQの部分はここで省略されています。)

以上がJavaScriptでカスタムイベントを作成する方法の詳細(xì)內(nèi)容です。詳細(xì)については、PHP 中國(guó)語(yǔ) Web サイトの他の関連記事を參照してください。

このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當(dāng)する法的責(zé)任を負(fù)いません。盜作または侵害の疑いのあるコンテンツを見つけた場(chǎng)合は、admin@php.cn までご連絡(luò)ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫像を無(wú)料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

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

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無(wú)料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡(jiǎn)単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無(wú)料のコードエディター

SublimeText3 中國(guó)語(yǔ)版

SublimeText3 中國(guó)語(yǔ)版

中國(guó)語(yǔ)版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強(qiáng)力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Java vs. JavaScript:混亂を解消します Java vs. JavaScript:混亂を解消します Jun 20, 2025 am 12:27 AM

JavaとJavaScriptは異なるプログラミング言語(yǔ)であり、それぞれ異なるアプリケーションシナリオに適しています。 Javaは大規(guī)模なエンタープライズおよびモバイルアプリケーション開発に使用されますが、JavaScriptは主にWebページ開発に使用されます。

JSで日付と時(shí)間を操作する方法は? JSで日付と時(shí)間を操作する方法は? Jul 01, 2025 am 01:27 AM

JavaScriptで日付と時(shí)間を処理する場(chǎng)合は、次の點(diǎn)に注意する必要があります。1。日付オブジェクトを作成するには多くの方法があります。 ISO形式の文字列を使用して、互換性を確保することをお?jiǎng)幛幛筏蓼埂?2。時(shí)間情報(bào)を取得および設(shè)定して、メソッドを設(shè)定でき、月は0から始まることに注意してください。 3.手動(dòng)でのフォーマット日付には文字列が必要であり、サードパーティライブラリも使用できます。 4.ルクソンなどのタイムゾーンをサポートするライブラリを使用することをお?jiǎng)幛幛筏蓼埂¥长欷椁沃匾圣荪ぅ螗趣蛄?xí)得すると、一般的な間違いを効果的に回避できます。

なぜの下部にタグを配置する必要があるのですか? なぜの下部にタグを配置する必要があるのですか? Jul 02, 2025 am 01:22 AM

PLACSTHETTHETTHE BOTTOMOFABLOGPOSTORWEBPAGESERVESPAGESPORCICALPURPOSESESFORSEO、userexperience、andDesign.1.IthelpswithiobyAllowingseNStoAccessKeysword-relevanttagwithtagwithtagwithtagwithemaincontent.2.iTimrovesexperiencebyepingepintepepinedeeping

JavaScript vs. Java:開発者向けの包括的な比較 JavaScript vs. Java:開発者向けの包括的な比較 Jun 20, 2025 am 12:21 AM

javascriptispreferredforwebdevelopment、whilejavaisbetterforlge-scalebackendsystemsandroidapps.1)javascriptexcelsininintingtivewebexperiences withitsdynAmicnature anddommanipulation.2)javaofferstruntypyping-dobject-reientedpeatures

DOMでのイベントの泡立ちとキャプチャとは何ですか? DOMでのイベントの泡立ちとキャプチャとは何ですか? Jul 02, 2025 am 01:19 AM

イベントキャプチャとバブルは、DOMのイベント伝播の2つの段階です。キャプチャは最上層からターゲット要素までであり、バブルはターゲット要素から上層までです。 1.イベントキャプチャは、AddEventListenerのUseCaptureパラメーターをTrueに設(shè)定することにより実裝されます。 2。イベントバブルはデフォルトの動(dòng)作であり、UseCaptureはfalseに設(shè)定されているか、省略されます。 3。イベントの伝播を使用して、イベントの伝播を防ぐことができます。 4.イベントバブルは、動(dòng)的なコンテンツ処理効率を改善するためにイベント委任をサポートします。 5.キャプチャを使用して、ロギングやエラー処理など、事前にイベントを傍受できます。これらの2つのフェーズを理解することは、タイミングとJavaScriptがユーザー操作にどのように反応するかを正確に制御するのに役立ちます。

JavaScript:効率的なコーディングのためのデータ型の調(diào)査 JavaScript:効率的なコーディングのためのデータ型の調(diào)査 Jun 20, 2025 am 12:46 AM

javascripthassevenfundamentaldatypes:number、string、boolean、undefined、null、object、andsymbol.1)numberseadouble-precisionformat、有用であるため、有用性の高いものであるため、but-for-loating-pointarithmetic.2)ストリングリムムット、使用率が有用であること

JavaScriptアプリケーションのペイロードサイズをどのように削減できますか? JavaScriptアプリケーションのペイロードサイズをどのように削減できますか? Jun 26, 2025 am 12:54 AM

JavaScriptアプリケーションがゆっくりとロードされ、パフォーマンスが低い場(chǎng)合、問(wèn)題はペイロードが大きすぎることです。ソリューションには、次のものが含まれます。1。コード分割(コードスプリッティング)を使用し、React.lazy()またはビルドツールを介して大きなバンドルを複數(shù)の小さなファイルに分割し、最初のダウンロードを減らすために必要に応じてロードします。 2。未使用のコード(Treeshaking)を削除し、ES6モジュールメカニズムを使用して「デッドコード」をクリアして、導(dǎo)入されたライブラリがこの機(jī)能をサポートしていることを確認(rèn)します。 3.リソースファイルを圧縮してマージし、GZIP/BrotliとTerserがJSを圧縮できるようにし、ファイルを合理的にマージし、靜的リソースを最適化します。 4.頑丈な依存関係を交換し、day.jsやフェッチなどの軽量ライブラリを選択します

JavaScriptモジュールの決定的なJSラウンドアップ:ESモジュールvs CommonJS JavaScriptモジュールの決定的なJSラウンドアップ:ESモジュールvs CommonJS Jul 02, 2025 am 01:28 AM

ESモジュールとCommonJSの主な違いは、ロード方法と使用シナリオです。 1.CommonJSは同期的にロードされ、node.jsサーバー側(cè)環(huán)境に適しています。 2.ESモジュールは、ブラウザなどのネットワーク環(huán)境に適した非同期にロードされています。 3。Syntax、ESモジュールはインポート/エクスポートを使用し、トップレベルのスコープに配置する必要がありますが、CommonJSは実行時(shí)に動(dòng)的に呼ばれるrequire/Module.Exportsを使用します。 4.CommonJSは、Expressなどのnode.jsおよびLibrariesの古いバージョンで広く使用されていますが、ESモジュールは最新のフロントエンドフレームワークとnode.jsv14に適しています。 5.混合することはできますが、簡(jiǎn)単に問(wèn)題を引き起こす可能性があります。

See all articles