テキストエリアの使用に関する注意事項

テキストエリアの使用に関する注意事項
なぜテキストエリアについて具体的に言及するのでしょうか?なぜなら、textarea ノードは実際には非常に特殊だからです。このノードは特別なため、IE と他のブラウザでは解釈が異なります。

しばらくハラハラさせておきますね、ハハハ!実際、主な理由は、今日、先輩がバグを修正するのを手伝ったことです。具体的には、サーバーからデータを取得してテキストエリアに挿入するときに障害が発生したためです。この状況は IE でのみ発生しました。他のブラウザはすべて正常です!

まず、textarea が特別なのはなぜでしょうか?すべてのフォーム プラグインでは、textarea の値は 2 つの開始タグと終了タグの間に記述されるため、その値は DOM の観点からはテキスト ノードと見なすことができます。これは textarea に固有のものです。この機能により、innerHTML の値を変更すると、テキストエリアのテキストを変更することができます。IE はこれをサポートしていますが、HTML タグを動的に挿入する機能は許可されていません。

実験してみるのもいいかもしれません:

IE で JS を介して HTML コードを挿入する場合、value または innerText の代わりに innerHTML 属性が使用されます。

IE9+ はテストしていませんが、IE6、7、8 ではすべてエラーが報告されます。

JS がテキストエリアに HTML を動的に挿入できないのはおそらくセキュリティ上の理由によるものですが、注意深い人なら、HTML コードを手動で入力するとテキストエリアがそれを受け入れることができることに気付くでしょう。これは実際に、キャラクターの脱出というプロセスを経たと思います。はい、これが HTML コードを手動で入力して成功した唯一の理由です。

私の意見では、多くのブラウザのテキストエリアが HTML 表示をサポートしていないのに、なぜ JS 操作を実行するときに innerHTML 属性を使用する必要があるのでしょうか?つまり、value を使用して HTML コードを挿入しても、innerHTML を使用して HTML コードを挿入しても、解析後には表示されません (textarea の代わりにリッチ テキスト エディターがあるのはそのためです)。そのため、value を使用して textarea の値を設定しないのはなぜでしょうか。

したがって、textarea の値は innerHTML ではなく (もちろん、Firefox では innerText になる可能性はさらに低くなります)、値を通じて設定する必要があると思います。これは開発者が注意すべき点です。最近見たコードの中には、常に innerHTML を使用するものがあったからです。実際のところ、すべては状況次第だと思います。

<<:  MySQL 8.0.26 のインストールとアンインストールの完全なステップバイステップの記録

>>:  ウェブ標準学習リソースの素晴らしいコレクション

推薦する

MySQL 5.7.23 解凍バージョンのインストールチュートリアル(画像とテキスト付き)

MySQLインストーラをダウンロードする公式ダウンロードアドレス: http://dev.mysq...

ドラッグ可能で編集可能なガントチャートの詳細な説明(HighchartsはVueとReactで使用できます)

序文Excel は強力で、広く使用されています。 Web アプリケーションの登場と改善に伴い、ユーザ...

axiosのシンプルなカプセル化と使用例コード

序文最近、プロジェクトを構築しているときに、リクエストのカプセル化について考え、どのようにカプセル化...

Nginx Rewrite の使用シナリオと設定方法の分析

Nginx Rewriteの使用シナリオ1. URL アドレスジャンプ。たとえば、ユーザーが pm....

Linux centos7 環境での MySQL インストール チュートリアル

Linux centos7 環境に MySQL をインストールする手順の詳細な紹介MySQLをインス...

VMware Workstation Pro が Windows で実行されない場合の解決策

国慶節の休暇後、Windows アップデート後に VMware 仮想マシンが開けなくなり、「VMwa...

Windows での MySQL スケジュールバックアップ スクリプトの実装

Windows サーバーでデータベース データを定期的にバックアップする場合は、Windows タス...

MySQLにおける区切り文字の定義と機能の詳細な説明

MySQL を初めて学ぶときは、区切り文字の本当の目的を理解していないかもしれません。区切り文字は、...

html+vue+element-ui のスムーズさを 1 分で体験

テクノロジーファンHTMLウェブページ、知っておくべきYouyou が開発した vue フロントエン...

Vue が学ぶべき知識ポイント: forEach() の使用

序文フロントエンド開発では、目的のコンテンツを取得するためにループをトラバースする必要がある状況に頻...

自動開始および停止コマンドを適用するには、Docker サービスを再起動します (推奨)

Docker サービス アプリケーションを再起動するコマンドを見てみましょう。具体的な内容は次のと...

LinuxでIPアドレスを手動で設定するための詳細な手順

目次1.まずネットワークカードの設定ディレクトリに入る2. ifcfg-ens33ネットワークカード...

複合主キーと複数列インデックスに遭遇した場合の MySQL 行ロックの詳細な説明

背景今日、他のプロジェクト チームと協力してシス​​テムのストレス テストを実施しているときに、プロ...

コンテナDockerCommitを介してイメージを送信し、DockerPushでイメージをプッシュします。

ローカルでコンテナを作成した後、このコンテナに基づいてローカル イメージを作成し、このイメージを D...

Dockerコンテナにホストディレクトリへの書き込み権限がない場合の解決策

Docker コンテナを適用する場合、多くの場合、ホスト ディレクトリを Docker コンテナにマ...