LLMS

contenteditableな要素でテキストだけを編集可能にする

Baseline 2025でcontenteditableにplaintext-onlyを渡せるようになりました。plaintext-onlyを指定すると、要素内での編集が可能な状態でリッチテキスト(太字やリンクなど)のスタイルが適用されないようになります。従来から存在するtrueを指定した時の挙動を復習してから挙動の違いを確認します。

公開: 2025年3月14日(金)
更新: 2025年11月15日(土)

はじめに

Firefox 136.0のリリースでcontenteditable属性の値にplaintext-onlyを渡せるようになったことで、2025年のBaselineにcontenteditable="plaintext-only"が追加されました。 contenteditable="plaintext-only"を付与された要素は、その要素のテキストのみを編集可能にすることができます。

Loading...

Loading...

html.spec.whatwg.org

contenteditable

contenteditableはグローバル属性(全てのHTML要素で共通な属性)で、付与した要素の中身を直接編集できるようにします。 contenteditableはグローバル属性ではありますが、一部の要素では利用できません。利用の可否はJavaScriptでHTMLElement.isContentEditableから確認できます。

<div contenteditable="true">
  ここを編集できます
</div>

div要素にcontenteditable="true"を付与したサンプル

ここを編集できます

上記のサンプルで「ここを編集できます」と記述された部分を選択すると、内容が変更可能であることがわかると思います。 サンプルの上部に書かれた「div要素にcontenteditable="true"を付与したサンプル」をコピーして貼り付けると、対象のテキストに加えて背景色と太字もそのままの状態で反映されることが確認できます。

単純な文字の他にも、下の画像のようにBaselineの埋め込み要素をそのまま貼り付けることも可能です(この画像自体も反映できます)。

contenteditable-plaintextonlyのbaseline-statusをコピーして要素に貼り付けた結果

このようにcontenteditable="true"は付与した要素を自由に編集可能な要素に変更します。

plaintext-only

contenteditabletrueではなくplaintext-onlyを付与すると、その要素のテキストのみを編集可能にします。

<div contenteditable="plaintext-only">
  ここを編集できます
</div>

div要素にcontenteditable="plaintext-only"を付与したサンプル

ここを編集できます

上記は先ほどのサンプルと同じ条件で、値をplaintext-onlyに変更したものです。 「div要素にcontenteditable="plaintext-only"を付与したサンプル」をコピーして貼り付けを行うと、テキストだけが追加されることが確認できます。背景やフォントの太さは反映されません。 これがplaintext-onlyの特徴です。trueを付与したときと異なり、テキストのみを編集可能にするので、実装上で考慮するケースが少なくなります。

おわりに

これまでは、contenteditableを利用する際には、リッチテキストのスタイルが付与されることを考慮して実装を行う必要がありました。

Baseline 2025で追加されたcontenteditable="plaintext-only"を利用することで、テキストのみを編集可能にできるので、よりシンプルに実装できるようになります。

リッチなテキストの編集が不要なケースでは、想定外を防ぐためにもplaintext-onlyを利用することを検討してみてください。

この記事はどうでしたか?

500文字以内でご記入ください

0
もくじ

©︎ 2024〜2025 k8o. All Rights Reserved.