実行時に HTML 要素を生成し、それをビューの表示オブジェクトに追加することは可能ですが、OpenLaszlo カーネルはすべてのマウス イベントとキーダウン イベントを処理し、作成したテキストエリアには渡しません。
<inputtext>
OpenLaszloのコンポーネントは internal をインスタンス化します<textarea>
。次の OpenLaszlo DHTML アプリをコンパイルします。
<canvas debug="true">
<inputtext id="iText" multiline="true" width="100" resize="true" bgcolor="red">
<handler name="oninit"><![CDATA[
this.setAttribute('text', 'Just\na\ntest!');
]]></handler>
</inputtext>
</canvas>
次に、ブラウザの JavaScript コンソールに次の式を入力して、テキスト オブジェクトを調べます。
iText.sprite.__LZdiv.children[0]
次のようなものが表示されます。
<textarea class="lzswfinputtextmultiline" name="" style="color: rgb(0, 0, 0); width: 96px; height: 40px; pointer-events: auto;">
ブラウザによっては、スタイルの値が異なる場合があります。
残念ながら、OpenLaszlo は、テキストエリアのキーダウン、フォーカス、およびマウス イベントを自分で処理せずにカスタム テキストエリアをアプリケーションに追加するための API を提供していません。これは、LFC/カーネル クラス ( LzText.lzs、LzInputText.lzs、LzTextSprite.js、LzInputTextSprite.js ) の組み合わせが効果的に行うことです。OpenLaszlo には DHTML ランタイムの前に SWF ランタイムがあったため、これらは DHTML の SWF テキスト クラスの動作を複製します。
これは HTML5 にとって最適とは言えず、おそらく OpenLaszlo プラットフォームの最大の弱点の 1 つです。したがって<textarea>
、DHTML ランタイム アプリに独自のアプリを追加しないことをお勧めします。ただし、それを iFrame/別の HTML ページに配置する場合を除きます。