2012-10-29 3 views
1

나는 dhtml 환경에서 textarea를 통합하려고하고있다. 텍스트 영역을 볼 수 있지만 텍스트 영역에는 아무 것도 입력 할 수 없습니다. 첨부 된 코드입니다. 이 런타임에 HTML 요소를 생성하고 뷰의 표시 객체에 그것을 추가 할 수는 있지만openlaszlo에 텍스트 영역을 통합하는 방법은 무엇입니까?

<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

예상되는 결과는 무엇입니까? 새로운 텍스트 영역을 동적으로 생성 하시겠습니까? 아니면 해당 텍스트를 텍스트 필드에 텍스트 내용으로 표시 하시겠습니까? –

+0

@ RajuBitter : 질문을 업데이트했습니다. 텍스트 영역을 볼 수 있지만 텍스트 영역에 아무 것도 입력 할 수 없습니다. – karthick

답변

2

는 오픈 라즐로 커널은 모든 마우스를 keyDown 이벤트를 처리하고 사용자가 만든 텍스트 영역로에 통과하지 않습니다.

OpenLaszlo의 <inputtext> 구성 요소는 내부 <textarea>을 인스턴스화합니다.

<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> 

지금 브라우저는 자바 스크립트 콘솔에이 식을 입력하여 텍스트 개체를 검사 : 다음 오픈 라즐로 DHTML 응용 프로그램을 컴파일

iText.sprite.__LZdiv.children[0]

당신은 볼 것 같은 뭔가 :

<textarea class="lzswfinputtextmultiline" name="" style="color: rgb(0, 0, 0); width: 96px; height: 40px; pointer-events: auto;">

브라우저에 따라 스타일 값이 다를 수 있습니다.

불행히도 OpenLaszlo는 텍스트 영역의 keydown, focus 및 mouse 이벤트를 직접 처리하지 않고도 사용자 지정 텍스트 영역을 응용 프로그램에 추가하는 API를 제공하지 않습니다. LFC/커널 클래스 (LzText.lzs, LzInputText.lzs, LzTextSprite.js, LzInputTextSprite.js)의 조합은 다음과 같습니다. DHL의 SWF 텍스트 클래스 동작을 복제합니다. OpenLaszlo는 DHTML 런타임 전에 SWF 런타임을 사용했기 때문에 DHTML에 대한 SWF 텍스트 클래스 동작을 복제합니다.

이것은 HTML5에 적합하지 않으며, 아마도 OpenLaszlo 플랫폼의 가장 큰 약점 중 하나입니다. 따라서 DHTML 런타임 앱에 자신의 <textarea>을 추가하지 않는 것이 좋습니다. iFrame/별도 HTML 페이지에 넣지 않는 것이 좋습니다.