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

テキストエリアの使用に関する注意事項
なぜテキストエリアについて具体的に言及するのでしょうか?なぜなら、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 のインストールとアンインストールの完全なステップバイステップの記録

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

推薦する

JSベースの手持ち連射機能+テキスト揺れ特殊効果コードの簡単実装

少し前にTikTokで揺れる連打が流行っていたので真似してみることにしました。さっそく効果をみてみま...

MySQL 5.7.20 圧縮版のダウンロードとインストールの簡単なチュートリアル

1. ダウンロードアドレス:参考: http://dev.mysql.com/downloads/m...

IOSデータベースアップグレードデータ移行の詳細な例

IOSデータベースアップグレードデータ移行の詳細な例まとめ:昔、データベースのバージョン アップグレ...

不規則な投影を実現するためのボックスシャドウとドロップシャドウのサンプルコード

border-radius で生成できる四角形やその他の図形に影を追加する場合 (「Adaptive...

文字列の GBK および GB2312 エンコードとデコードのフロントエンド実装 (概要)

序文プロジェクトを開発しているときに、かなり厄介な問題に遭遇しました。この製品では、判断のためにブラ...

ウェブデザインと制作の一般的な原則をまとめる

<br />関連記事: Web コンテンツ ページ作成に関する 9 つの実用的な提案、W...

Docker を使用して nginx で tomcat クラスターを構築する方法 (画像とテキスト付き)

まず、Tomcatフォルダを作成します。Dockerの設定を容易にするために、ルートディレクトリに直...

キャッシュサーバーを構築するためのMemcached方式

序文多くの Web アプリケーションは、リレーショナル データベース管理システム (RDBMS) に...

Ubuntu の仮想環境に Django をインストールする方法

Ubuntu コマンドライン ウィンドウで次の操作を実行します。 1. 仮想環境をインストールする...

Linuxオンラインソフトウェアgccをオンラインでインストールする方法

Linux オンラインインストール関連コマンド: yum install: すべてインストールyum...

Linux インストール MongoDB の起動と一般的な問題の解決

MongoDB のインストール プロセスと問題記録1. MongoDBのインストールMongoDBを...

HTML 5.1 学習: 14 の新機能とアプリケーション例

序文ご存知のとおり、HTML5 はインターネット コミュニティ全体に標準を提供する組織である Wor...

elementui の el-popover スタイルの変更が有効にならない問題の解決策

element-uiを使用する場合、el-popoverというよく使われるコンポーネントがありますが...

Tomcat 7.0 で仮想ディレクトリを設定し、仮想パスを構成する方法

Tomcat7.0は仮想ディレクトリを設定します(1)現在、当社のウェブサイトはデフォルトのディレク...

Vueはv-modelを使用してel-paginationコンポーネントのプロセス全体をカプセル化します。

v-model を使用してページング情報オブジェクトをバインドします。ページング情報オブジェクトに...