我只是想在dhtml环境中集成textarea。我能够看到文本区域但是我无法在文本区域中输入任何内容。附件是一段代码片段。
<canvas debug="true">
<attribute name="htmlsnippet" type="string" value="" />
<handler name="oninit" args="e">
<![CDATA[
canvas.htmlsnippet = '<textarea id="textArea" rows="8" cols="50"></textarea>';
]]>
</handler>
<simplelayout axis="y" spacing="30" />
<text id="textcont" width="530" height="350" bgcolor="#cccccc" />
<button text="modify text" onclick="textcont.sprite.setText(canvas.htmlsnippet)" />
</canvas>
答案 0 :(得分:2)
虽然可以在运行时生成HTML元素并将其添加到视图的显示对象,但OpenLaszlo内核将处理所有鼠标和keydown事件,而不是将它们传递给您创建的textarea。
OpenLaszlo中的<inputtext>
组件实例化内部<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来将自定义textarea添加到应用程序,而无需自己处理textarea的keydown,focus和mouse事件。这实际上是LFC /内核类(LzText.lzs,LzInputText.lzs,LzTextSprite.js,LzInputTextSprite.js)的组合:它们复制DHTML的SWF文本类行为 - 因为OpenLaszlo有DHTML运行时之前的SWF运行时。
这不是HTML5的最佳选择,可能是OpenLaszlo平台最大的弱点之一。因此,最好不要将自己的<textarea>
添加到DHTML运行时应用程序中 - 除非您将其添加到iFrame /单独的HTML页面中。