私が見たことのある脆弱性のあるUIウィジェットライブラリはまだありませんが、(良い理由と悪い場合に)人々がそれらを要求するためにのみ、それらがいつか作られることを保証します。
HTML5キャンバス仕様自体は、それをしようとすることに対して強くアドバイスします。仕様としては、
canvas要素を使用してテキスト編集コントロールを実装しないでください。そうすることには多くの欠点があります。
- キャレットのマウス配置を再実装する必要があります。
- キャレットのキーボード移動を再実装する必要があります(複数行のテキスト入力の場合は、複数行にわたることもあります)。
- テキストフィールドのスクロールを実装する必要があります(長い行は水平方向、複数行入力は垂直方向)。
- コピーアンドペーストなどのネイティブ機能を再実装する必要があります。
- スペルチェックなどのネイティブ機能を再実装する必要があります。
- ドラッグアンドドロップなどのネイティブ機能を再実装する必要があります。
- ページ全体のテキスト検索などのネイティブ機能を再実装する必要があります。
- カスタムテキストサービスなど、ユーザー固有のネイティブ機能を再実装する必要があります。これは、各ユーザーが異なるサービスをインストールしている可能性があり、そのような可能性のあるサービスの無制限のセットが存在するため、不可能に近づいています。
- 双方向テキスト編集を再実装する必要があります。
- 複数行のテキスト編集では、関連するすべての言語に対して行折り返しを実装する必要があります。
- テキスト選択を再実装する必要があります。
- 双方向テキスト選択のドラッグを再実装する必要があります。
- プラットフォーム固有のキーボードショートカットを再実装する必要があります。
- プラットフォーム固有の入力メソッドエディター(IME)を再実装する必要があります。
- 元に戻す機能とやり直し機能を再実装する必要があります。
- キャレットまたは選択後の拡大率などのアクセシビリティ機能を再実装する必要があります。キャンバスで物事のこれらの種類を実装する
同じフォントがないだけで、ブラウザごとに異なるように見えますが、フォントとフォントのレンダリングブラウザのレンダリングキャンバスの間で異なって見える悪夢、特に今日、です。
絶対に驚くべきことだ! – OCDev
これはLGPLとして現在ライセンスされています – draganstankovic
そして今はApacheライセンスの下でライセンスされています! – CrushedPixel