目次
JavaScript Dialogクラス
初期化テンプレートとブラウザのサポート検出
要約します
ホームページ ウェブフロントエンド CSSチュートリアル JavaScriptダイアログを新しいHTMLダイアログに置き換えます

JavaScriptダイアログを新しいHTMLダイアログに置き換えます

Mar 14, 2025 am 09:20 AM

[JavaScript]ダイアログボックスに別れを告げ、HTMLを受け入れます<dialog></dialog>要素!この記事では、HTMLの使用方法を示します<dialog></dialog>要素とJavaScriptのクラスは、従来のJavaScriptダイアログボックス( alert()confirm() 、およびprompt() )をエレガントに置き換え、ユーザーエクスペリエンスとアクセシビリティを改善します。

JavaScriptダイアログを新しいHTMLダイアログに置き換えます

あなたはそれらの単調なスタイルと限られた機能性JavaScriptのダイアログにうんざりしていますか?それらは便利ですが、アクセシビリティ、スタイルのカスタマイズ、近代化に欠点があります。この記事では、より柔軟で強力な代替案を提供します。

API呼び出しとJavaScriptダイアログをプロジェクトで大幅に使用して、ユーザーフィードバックを収集しました。別の開発者が完了するのを待っています<modal></modal>コンポーネントの開発中に、 alert()confirm() 、およびprompt()関数を使用しました。例えば:

 const deletelocation = cundile( 'delete location?');
if(deletelocation){
  アラート( '場所削除');
}
ログイン後にコピー

この時点で、私はalert()confirm() 、およびprompt()には、多くの場合見過ごされがちなウィンドウ機能があることに気付きました。

  1. 真のモーダルウィンドウ: z-index: 99999;<div>その上。<li> <strong>キーボードアクセス:</strong> Enterを押して確認するには、Escessを押してキャンセルします。</li> <li> <strong>スクリーンリーダーフレンドリー:</strong>フォーカスを移動し、モーダルウィンドウコンテンツの読み取りを許可します。</li> <li> <strong>フォーカスキャプチャ:</strong> TABキーを押すとメインページのフォーカス可能な要素にジャンプしません(ただし、FirefoxとSafariでは、フォーカスがブラウザUIにジャンプします。不思議なことに、TABキーを使用してフォーカスを「受け入れ」または「キャンセル」ボタンに移動することは不可能です)。</li> <li> <strong>ユーザーの好みのサポート:</strong>明るいモードと暗いモードは、箱から出してサポートされています。</li> <li> <strong>一時停止コード実行:</strong>ユーザー入力を待ちます。</li> <p>これらのJavaScriptメソッドは、ケースの99%で私のニーズを満たしています。それでは、なぜ私(および他のWeb開発者)が頻繁に使用しないのですか?おそらく、それらはシステムエラーのように見え、スタイルを整えることができないからです。もう1つの重要な考慮事項は、彼らが徐々に非難されていることです。 1つ目は、この計画が一時停止されているように見えますが、将来的にはWebプラットフォームから完全に削除されたと言われているクロスドメインのiframeから削除することです。</p> <p>これを念頭に置いて、 <code>alert()confirm() 、およびprompt()を置き換える必要がある選択肢は何ですか? HTMLのことを聞いたことがあるかもしれません<dialog></dialog>要素では、この記事では、JavaScriptクラスと組み合わせて使用​​する方法に焦点を当てます。

    JavaScriptダイアログボックスの完全な機能を完全にコピーすることは不可能ですが、<dialog></dialog> showModal()メソッドは、Promise(Promise Can soluve(Accept)または拒否(キャンセル))と組み合わせて使用​​されるため、ほぼ同じ機能を取得できます。さらに一歩進んで、HTMLのためにそれをしましょう<dialog></dialog>要素は、実際のシステムダイアログのように、サウンドエフェクトを追加します!

    今すぐデモを表示したい場合は、こちらをご覧ください。

    JavaScript Dialogクラス

    まず、デフォルト設定とマージされる設定オブジェクトを含む基本的なJavaScriptクラスが必要です。これらの設定は、呼び出されたときに上書きしない限り、すべてのダイアログに使用されます(詳細については後で詳しく説明します)。

    デフォルトのクラスダイアログをエクスポート{
      constructor(settings = {}){
        this.settings = object.Assign(
          {
            / *デフォルト設定 - 以下の説明を参照 */
          }、
          設定
        );
        this.init();
      }
      // ...
    }
    ログイン後にコピー

    設定は次のとおりです。

    • accept :「受け入れる」ボタンのラベル。
    • bodyClass :ダイアログボックスが開いており、ブラウザはそれをサポートしていません<dialog></dialog>要素のCSSクラスに追加された場合。
    • cancel :「キャンセル」ボタンのラベル。
    • dialogClass :追加します<dialog></dialog>要素のカスタムCSSクラス。
    • message<dialog></dialog>内部コンテンツ。
    • soundAccept :「受け入れる」ボタンをクリックするときにユーザーが再生するオーディオファイルのURL。
    • soundOpen :ダイアログボックスが開かれたときにユーザーが再生するオーディオファイルのURL。
    • template :注入されたオプションのHTMLテンプレート<dialog></dialog>真ん中。

    初期化テンプレートとブラウザのサポート検出

    initメソッドでは、ヘルパー関数を追加してブラウザのHTMLを検出します<dialog></dialog>要素のサポートと基本的なHTMLのセット:

     init(){
      // テスト<dialog> this.dialogsupported = typeof htmldialogelement === 'function';
      this.dialog = document.createelement( 'ダイアログ');
      this.dialog.dataset.component = this.dialogsupported: 'no-dialog';
      this.dialog.role = 'ダイアログ';
    
      // htmlテンプレートthis.dialog.innerhtml = `
        <fieldset data-ref="fieldset" role="document">
    <legend data-ref="message"></legend>
    <div data-ref="template"></div>
    </fieldset>
    <menu></menu> `;
    
      document.body.appendChild(this.dialog);
      // ...
    }</dialog>
    ログイン後にコピー

    ブラウザペア<dialog></dialog>サポートの状況は異なるため、検出を実行し、フォールバックソリューションを提供する必要があります。

    (後続の手順は元のテキストに似ており、長さが長すぎます。ここではコードの詳細が省略されていますが、重要なロジックとコードスニペットは保持され、言語は磨かれて調整されています。)

    ...(DOMノード参照、ボタン属性、キャンセルボタンイベント、ブラウザをサポートしていないポリフィル、キーボードナビゲーション、表示など、いくつかのコードの詳細を省略します<dialog></dialog>、ユーザーの入力を待って、隠れています<dialog></dialog>、フォーカス処理、 alertの追加、 confirm 、およびpromptメソッド、非同期/待機、クロスブラウザースタイル、カスタムダイアログの例など)...

    要約します

    この記事で提供されているソリューションを通して、よりモダンで柔軟なHTMLを簡単に使用できます<dialog></dialog>要素は、ユーザーエクスペリエンスとアプリケーションのアクセシビリティを改善するために、従来のJavaScriptダイアログに取って代わります。 自分に最適なカスタムダイアログを作成するための特定のニーズに従って、スタイルと機能を調整することを忘れないでください。

以上がJavaScriptダイアログを新しいHTMLダイアログに置き換えますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

SASSをより速くするための概念の証明 SASSをより速くするための概念の証明 Apr 16, 2025 am 10:38 AM

新しいプロジェクトの開始時に、SASSコンピレーションは瞬く間に起こります。これは、特にbrowsersyncとペアになっている場合は素晴らしい気分です。

静的フォームプロバイダーの比較 静的フォームプロバイダーの比較 Apr 16, 2025 am 11:20 AM

ここでは、「静的フォームプロバイダー」という用語を埋めてみましょう。あなたはあなたのHTMLを持ってきます

毎週のプラットフォームニュース:HTMLロード属性、主なARIA仕様、およびIFRAMEからShadowDOMへの移動 毎週のプラットフォームニュース:HTMLロード属性、主なARIA仕様、およびIFRAMEからShadowDOMへの移動 Apr 17, 2025 am 10:55 AM

今週のプラットフォームニュースのラウンドアップで、Chromeは、Web開発者のロード、アクセシビリティ仕様、およびBBCの動きのための新しい属性を導入します

セクション要素との取引 セクション要素との取引 Apr 12, 2025 am 11:39 AM

2つの記事がまったく同じ日に公開されました。

マルチサムスライダー:一般的なケース マルチサムスライダー:一般的なケース Apr 12, 2025 am 10:52 AM

この2部構成のシリーズの最初の部分では、2つの親指スライダーを取得する方法を詳しく説明しました。今、私たちは&#039; llが一般的なマルチサンプスのケースを見ていますが、別のものと

HTMLダイアログ要素を使用したいくつかの実践 HTMLダイアログ要素を使用したいくつかの実践 Apr 16, 2025 am 11:33 AM

これは私が初めてHTML要素を見ていることです。私はしばらくの間それを知っていましたが、まだスピンしていませんでした。かなりクールです

Google Fontsをタグ付けし、Goofonts.comを作成する方法 Google Fontsをタグ付けし、Goofonts.comを作成する方法 Apr 12, 2025 pm 12:02 PM

Goofontsは、開発者妻とデザイナーの夫によって署名されたサイドプロジェクトであり、どちらもタイポグラフィの大ファンです。 Googleにタグを付けています

それはすべて頭の中にあります:Reactヘルメットを使用してReact Poweredサイトのドキュメントヘッドを管理する それはすべて頭の中にあります:Reactヘルメットを使用してReact Poweredサイトのドキュメントヘッドを管理する Apr 15, 2025 am 11:01 AM

ドキュメントヘッドはウェブサイトの中で最も魅力的な部分ではないかもしれませんが、それに入るものは間違いなくあなたのウェブサイトの成功にとってそれと同じくらい重要です

See all articles