JavaScriptダイアログを新しいHTMLダイアログに置き換えます
[JavaScript]ダイアログボックスに別れを告げ、HTMLを受け入れます<dialog></dialog>
要素!この記事では、HTMLの使用方法を示します<dialog></dialog>
要素とJavaScriptのクラスは、従来のJavaScriptダイアログボックス( alert()
、 confirm()
、およびprompt()
)をエレガントに置き換え、ユーザーエクスペリエンスとアクセシビリティを改善します。
あなたはそれらの単調なスタイルと限られた機能性JavaScriptのダイアログにうんざりしていますか?それらは便利ですが、アクセシビリティ、スタイルのカスタマイズ、近代化に欠点があります。この記事では、より柔軟で強力な代替案を提供します。
API呼び出しとJavaScriptダイアログをプロジェクトで大幅に使用して、ユーザーフィードバックを収集しました。別の開発者が完了するのを待っています<modal></modal>
コンポーネントの開発中に、 alert()
、 confirm()
、およびprompt()
関数を使用しました。例えば:
const deletelocation = cundile( 'delete location?'); if(deletelocation){ アラート( '場所削除'); }
この時点で、私はalert()
、 confirm()
、およびprompt()
には、多くの場合見過ごされがちなウィンドウ機能があることに気付きました。
-
真のモーダルウィンドウ:
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 サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

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

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

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

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

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

ホットトピック











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

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

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

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

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

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

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