本HTCの機能は次の8つです。
<INPUT><TEXTAREA>ライクな外観
文字表示
文字編集
初期表示文字列の指定
操作文字数の制限と文字列長補正
警告表示
JSVRAX.TSFの処理前イベントを発生
本HTCは基本的に<INPUT type="text"><TEXTAREA>と同じような外観の入力域を表示します。
図8.2 Textarea HTCが表示する入力域の外観
注意
単一行で使用する場合は、以下の点に注意してください。
DOCTYPEによりXHTMLなどのstandardレンダリングモードを指定している場合は、本HTCのエレメントに対して高さを指定してください。指定しなかった場合、縦方向に縮んだ入力域になります。
複数行で使用する場合は、以下の点に注意してください。
縦スクロールバーを消すことはできません。
本HTCのエレメントに対して高さを指定してください。指定しなかった場合、次のような現象が発生します。
入力文字列の行数に従って、エレメントの高さが変わることがあります。
正しく縦スクロール表示できないことがあります。
OSの種類やテーマ、ブラウザバージョン、ドキュメントモードによっては、<INPUT type="text"><TEXTAREA>と外観が異なる場合があります。外観を近づけたい場合は、本HTCのエレメントのスタイルを定義してください。
スタイル定義の例: Classic
style="border-style:ridge inset inset ridge; border-color:ThreeDShadow ThreeDHighlight ThreeDHighlight ThreeDShadow; border-width:2px;"
スタイル定義の例: Windows 8 Basic
style="border-style:solid; border-color:ThreeDShadow ThreeDLightShadow ThreeDLightShadow ThreeDLightShadow; border-width:1px;"
図8.3 各スタイルを定義したTextarea HTCの入力域の外観
本HTC上の文字表示は、利用者が定義する文字処理定義に従います。入力不可な文字は、代替文字に置換して表示します。初期表示文字列などの静的なタイミングだけでなく、文字編集などの動的なタイミングにおいてもこれに従います。
参考
文字処理定義による処理のタイミング
システムIMEからの入力の場合、次のタイミングで文字処理定義によるチェック/置換を行います。
[Enter]キーが押されたタイミング
キャレットが移動したタイミング
注意
システムIMEにおいて、[Enter]キーで変換候補が確定しないような特殊な設定がされている場合は、[Enter]キーが押された際に正しく補正されないことがあります。
改行文字を補正することはできません。
動的な文字列補正時、キャレットが補正文字列の末尾に移動することがあります。
例) 補正すべき文字を入力し、マウスで入力領域内をクリックすると、本来はクリックした場所にキャレットが移動すべきですが、入力文字列の末尾に移動することがあります。
Textarea HTCでは、利用者が入力不可文字を入力した際、altChar属性に指定した代替文字に自動補正します。Textarea HTCによる文字表示/入力部品上で入力抑止は行いたいが、代替文字への自動補正は不要(行いたくない)という場合は、次のようにしてください。
Textarea HTCでは自動補正を動作させないためにaltChar属性を指定しないようにする
入力抑止を行うためにJSVRAX.Utility.CharBehavior.Parserクラスを使用し、アプリケーション側で文字列に対する入力抑止のチェックを行う
合成文字(結合文字)の表示については、基本的には<INPUT type="text"><TEXTAREA>と同じ動作となります。ただし、JSVRAX.TSFが起動している場合は、合成文字の間にキャレットが入ると文字が2つに分裂(例 「け|゛」)し、それ以外は合成して表示します(例 「げ|」)。
本HTCと<TEXTAREA>とで、文字列の折り返し位置が異なることがあります。例えば、英単語のあとに半角空白がある場合、一般的には半角空白の前で折り返されるものが、本HTCでは英単語の途中で分かれることがあります。
JSVRAX.TSFを起動/終了する際、文字列の折返し位置が変わることがありますが、コンテンツのテキスト値に影響はありません。
「ソフトハイフン(U+00AD)」は、文字コードは保持されますが、機能しません。
本HTCではsubmitのためのフォーム部品を書き出しません。値をsubmitする場合は、submit用のフォーム部品を利用者が用意し、本HTCから取得した値を代入して、submitしてください。
文字編集時に可能な操作は「表8.1 Textarea HTC : 文字編集の機能一覧」のとおりです。
操作名称 | 内容 | キー操作 | マウス操作 |
---|---|---|---|
キャレット移動 | キャレットを移動させる。 |
| クリックなど、一般的なキャレット移動操作 |
範囲選択 | 文字列の範囲選択を行う。 |
| 一般的な範囲選択操作 |
キーボードからの文字入力 | システムIMEあるいはJSVRAX.TSFによる文字入力を受け付ける。入力文字列は文字処理定義に従って表示する。 | システムIMEあるいはJSVRAX.TSFの仕様に従う | システムIMEあるいはJSVRAX.TSFの仕様に従う |
後退 | キャレットの左の文字を削除する。 | [BackSpace] | なし |
削除 | キャレットの右の文字を削除する。 | [Delete] | なし |
改行 | キャレット位置に改行文字を挿入する。 | [Enter] | なし |
コピー/カット/ペースト | 選択範囲の文字列をコピー/カットし、キャレット位置にペーストする。文字処理定義に従い、クリップボードへの入力時は文字にデコードし、クリップボードからの出力時は表示文字列にエンコードする。 |
| なし |
ドラッグ/ドロップ | 選択範囲の文字列をドラッグ/ドロップする。Ctrlが押されている場合は、選択範囲の移動でなくコピーになる。文字処理定義に従い、トランスファバッファへの入力時は文字にデコードし、トランスファバッファからの出力時は表示文字列にエンコードする。 | なし | 一般的なドラッグ/ドロップ操作 |
挿入/上書き | 文字列入力時の挿入/上書きモードをトグルする。 | [Insert] | なし |
JSVRAX.TSFの起動/終了 | JSVRAX.TSFを起動/終了する。 | JSVRAX.TSF起動/終了キー | なし |
注意
各操作に関する注意事項は次のとおりです。
操作名称 | 注意事項 |
---|---|
キャレット移動 |
|
範囲選択 |
|
コピー/カット/ペースト |
|
ドラッグ/ドロップ |
|
挿入/上書き |
|
<TEXTAREA>同様、本HTCのタグで囲まれた文字列を本HTCの初期表示文字列とします。文字列に含まれる文字参照表現は、実体化して表示します。
本HTCは、文字表示/編集の度に、文字処理定義によるチェック/置換、あるいは、文字と表示用データとのエンコード/デコードを行います。そのため、扱える文字数に制限を設けています。
本HTCのコンテンツ文字列の最大長は約1000文字、コピー&ペースト/ドラッグ&ドロップのターゲット文字列は500文字(ただし、JSVRAX.TSF起動時は、数文字短くなることがあります)です。改行(\r\n)と4byte文字は2文字と数え、初期表示文字列の文字参照はバラバラの文字数で数えます。コンテンツ文字列の最大長は、本HTCの拡張プロパティであるmaxLengthプロパティで設定(変更)することができます。
例
「あいう」を初期表示すると「あいう」になりますが、初期表示時の文字列長チェックにおいては10文字と数えます。
初期文字列/innerHTMLプロパティには1000文字以上の文字列が指定/格納できますが、本HTCの機能においては、先頭の1000文字までを対象とします。なお、初期表示時およびvalueプロパティの設定時は、maxLengthプロパティの値ではなく、本HTCのコンテンツ文字列最大長で長さ補正を行います。この動きは、<INPUT type="text">のmaxLengthプロパティの動きと同じです。
注意
本HTCに格納される文字列は、必ずしもmaxLengthプロパティの長さに収まっているわけではないため、必ず別途チェックを行ってください。
本HTCのコンテンツ文字列最大長に接近した値を文字列長とすると、文字参照表現が入ってきた場合に限界を超えることがあるため、充分に余裕を持たせた値をmaxLengthに指定してください。
クライアントスペックが低い場合など、大量の文字を扱う余裕が無い場合は、maxLengthを少なめに設定してください。
オペレータに対する情報通知として、本HTC上部に警告エレメントを表示します。
図8.4 Textarea HTC : 警告表示
警告エレメントは、警告アイコンとスクロールメッセージとで構成されます。メッセージが2回スクロールしたら警告エレメントを消します。メッセージ部は、マウスオーバされるまで半透明で表示します。
「◆JSVRAX.TSFの処理前イベントを発生」を参照してください。