目次
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)

Vue 3 Vue 3 Apr 02, 2025 pm 06:32 PM

それは&#039; Vueチームにそれを成し遂げてくれておめでとうございます。それは大規模な努力であり、長い時間がかかったことを知っています。すべての新しいドキュメントも同様です。

ブラウザから有効なCSSプロパティ値を取得できますか? ブラウザから有効なCSSプロパティ値を取得できますか? Apr 02, 2025 pm 06:17 PM

私はこの非常に正当な質問で誰かに書いてもらいました。 Leaは、ブラウザから有効なCSSプロパティ自体を取得する方法についてブログを書いています。それはこのようなものです。

CI/CDで少し CI/CDで少し Apr 02, 2025 pm 06:21 PM

「ウェブサイト」は「モバイルアプリ」よりも適していると言いますが、Max Lynchからのこのフレーミングが好きです。

粘着性のあるポジショニングとサスのダッシュを備えた積み重ねられたカード 粘着性のあるポジショニングとサスのダッシュを備えた積み重ねられたカード Apr 03, 2025 am 10:30 AM

先日、Corey Ginnivanのウェブサイトから、この特に素敵なビットを見つけました。そこでは、スクロール中にカードのコレクションが互いに積み重ねられていました。

WordPressブロックエディターでのマークダウンとローカリゼーションを使用します WordPressブロックエディターでのマークダウンとローカリゼーションを使用します Apr 02, 2025 am 04:27 AM

WordPressエディターでユーザーに直接ドキュメントを表示する必要がある場合、それを行うための最良の方法は何ですか?

レスポンシブデザインのブラウザを比較します レスポンシブデザインのブラウザを比較します Apr 02, 2025 pm 06:25 PM

これらのデスクトップアプリがいくつかあり、目標があなたのサイトをさまざまな次元ですべて同時に表示しています。たとえば、書くことができます

スティッキーヘッダーとフッターにCSSグリッドを使用する方法 スティッキーヘッダーとフッターにCSSグリッドを使用する方法 Apr 02, 2025 pm 06:29 PM

CSS Gridは、レイアウトをこれまで以上に簡単にするように設計されたプロパティのコレクションです。何でもするように、少し学習曲線がありますが、グリッドは

Googleフォント変数フォント Googleフォント変数フォント Apr 09, 2025 am 10:42 AM

Google Fontsが新しいデザイン(ツイート)を展開したようです。最後の大きな再設計と比較して、これははるかに反復的です。違いをほとんど伝えることができません

See all articles