首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Open Laszlo5.0中,this.__LZtextclip.text的合适替代品是什么

在Open Laszlo5.0中,this.__LZtextclip.text的合适替代品是什么
EN

Stack Overflow用户
提问于 2012-09-04 20:56:37
回答 2查看 141关注 0票数 2

我想知道这条线的合适替代品是什么。

代码语言:javascript
复制
this.__LZtextclip.text

我使用它来获取text节点中存在的字符串。这在Openlaszlo 3.3中运行良好,但在4.9和5.0中出现了问题

我试着把它更新为

代码语言:javascript
复制
this.sprite.__LZtextclip.text

我得到了一个错误:

代码语言:javascript
复制
79: Error: Access of possibly undefined property __LZtextclip through a reference with static type LzSprite, in line: Debug.write(this.sprite.__LZtextclip.text);

你知道为什么会发生这个问题吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-04 23:57:52

如果要尝试访问文本字段的文本内容,为什么不直接访问属性文本

代码语言:javascript
复制
<canvas> 

    <text name="sample" id="gRead" />

    <handler name="oninit">
      gRead.setAttribute('text',"HI");
      Debug.info(gRead.text);
    </handler>

</canvas>

在OpenLaszlo 3.3中有getText()方法,它提供相同的值。在代码中访问mx.textfield对于DHTML运行时不起作用。

HTML :添加了关于剥离标签的信息

Flash Textfield类flash.text.Textfield提供了在Textfield实例中启用HTML标签内容的API。有两个不同的属性,一个称为text,另一个称为htmlText。如果要直接访问lz.text实例的Flash Textfield对象,则它是lz.text实例的display对象的属性:

代码语言:javascript
复制
// Flash Textfield instance
gRead.getDisplayObject().textfield
// Pure text content
gRead.getDisplayObject().textfield.text
// Formatted text
gRead.getDisplayObject().textfield.htmlText

您应该知道,Flash会自动将HTML格式添加到您设置为内容的任何文本字符串中。当你这样做的时候

代码语言:javascript
复制
gRead.setAttribute('text',"HI");

textfield.htmlText值为

代码语言:javascript
复制
<P ALIGN="LEFT"><FONT FACE="Verdana" SIZE="11" COLOR="#000000" LETTERSPACING="0" KERNING="1">HI</FONT></P> 

对于DHTML运行时,文本内容被添加为标记的innerHTML,并且没有标准化的API来检索带有内容的标记的DOM结构的纯文本内容。您可以编写自己的函数来提取文本内容,或者使用现有框架(如jQuery text() function )中的JavaScript函数来实现与DHTML运行时相同的结果。

我猜原因是从HTML4.0或4.1开始,Laszlo就开始使用基于OpenLaszlo的富文本编辑器进行文本输入。

剥离标签时,跨运行时保持一致行为的最好方法是在服务器端进行转换。如果您希望在多行文本中使用一致空格处理,这一点尤其必要,因为浏览器处理空格的方式存在差异。如何最好地从JavaScript中的字符串中剥离标签的问题已经在Stackoverflow上得到了回答,例如JavaScript: How to strip HTML tags from string?

下面是一个跨运行时的示例,它可以在动态超文本标记语言中与火狐、Chrome一起工作,也可以与IE9+一起工作:

代码语言:javascript
复制
<canvas> 

    <text name="sample" id="gRead" />

    <handler name="oninit"><![CDATA[
      gRead.setAttribute("text", 'Hello <b>World</b> <a href="http://www.openlaszlo.org">OL</a>');
      Debug.info("gRead.text=" + gRead.text);
      if ($dhtml) {
        Debug.info(gRead.getDisplayObject().textContent);
      } else {
        Debug.info(gRead.getDisplayObject().textfield.text);
      }
    ]]></handler>

</canvas>
票数 2
EN

Stack Overflow用户

发布于 2012-09-04 21:55:01

我找到了问题所在。问题是我必须声明一个变量,并且必须引用该变量的属性。

代码语言:javascript
复制
<canvas> 
<library>
    <text name="sample" id="gRead">         
        <method name="getTextFrom">
            Debug.write("this.text" , this.sprite);
            var mx = this.sprite;           
            Debug.write("this.text" , mx.textfield.text);

        </method>
    </text>

</library>
<handler name="oninit">
    gRead.setAttribute('text',"HI");
    gRead.getTextFrom();

</handler>
</canvas>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12263950

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档