【问题标题】:Is it possible to directly access the div of a view in the OpenLaszlo DHTML runtime?是否可以在 OpenLaszlo DHTML 运行时中直接访问视图的 div?
【发布时间】:2012-08-08 22:43:58
【问题描述】:

是否有用于访问 DHTML 运行时中 OpenLaszlo 视图的 HTML div 对象的公共 API? OpenLaszlo 文档中似乎没有这样的示例,但从技术上讲,它应该是可能的。

【问题讨论】:

    标签: dhtml openlaszlo


    【解决方案1】:

    创建 DHTML 运行时时,OpenLaszlo 团队决定向使用 LZX 的开发人员隐藏 HTML div 结构的实现细节。虽然不建议直接访问视图的底层对象结构,但在某些情况下您必须这样做 - 但它可能会随着平台的未来更新而破坏您的应用程序。

    以下面的简单示例应用为例:

    <canvas debug="false">
    
      <view name="v1" x="10" y="10" width="100" height="100" bgcolor="red">
      </view>
    
    </canvas>
    

    如果您使用查询字符串编译应用程序

    lzoptions=proxied(true)%2Cruntime(dhtml)&target=html

    您将在没有开发人员控制台的情况下获得应用程序。现在,当您检查页面结构时,您将看到以下 div 结构:

    <body>
      <div id="appcontainer" style="height: 100%; width: 100%; margin: 0px; padding: 0px; border: 0px none; overflow: hidden; text-align: left; ">
        <div class="lzappoverflow" style="width: 1905px; height: 429px; ">
          <div class="lzcanvascontextdiv" id="lzcanvascontextdiv">
            ...
          </div>
          <div class="lzcanvasdiv">
            <!-- visual part of view instance with id="v1" -->
            <div class="lzdiv" style="background-color: rgb(255, 0, 0); height: 100px; width: 100px; left: 10px; top: 10px; z-index: 2; "></div>
          </div>
        </div>
      </div>
    </body>
    

    我删除了 CSS 信息并添加了注释以标记 id=v1 代表视图的 div。您看不到任何 id 值为“v1”的 div,因为视图实例被实例化为存储对视觉呈现的引用的 JavaScript 对象。您可以通过调用访问 div

    v1.getDisplayObject()

    会返回的

    <div class=​"lzdiv" style=​"background-color:​ rgb(255, 0, 0)​;​ height:​ 100px;​ width:​ 100px;​ left:​ 10px;​ top:​ 10px;​ z-index:​ 2;​ ">​</div>​
    

    视图的对象层次结构是 *view->sprite->__LZdiv* 属性。这意味着,对于每个视图,OpenLaszlo 都会实例化一个特定于运行时的 sprite 对象,而后者又会为 DHTML 运行时生成相应的 div。

    v1.sprite.__LZdiv.style.backgroundColor "RGB(255, 0, 0)"

    这里是LzViewLzSprite 类的实现链接,如果您有兴趣了解其内部结构:

    【讨论】:

    • 非常感谢,我只是想知道为什么 Laszlo 从来没有创建一个 API 来简化 JavaScript/CSS 与 OpenLaszlo 应用程序的集成。尤其是现在,Flash 不再那么吸引人了。
    • OpenLaszlo 在 4.x 版本发布之前只支持编译到 Flash。不幸的是,当他们向其中添加 HTML5/DHTML 模式时,他们保持模型与 Flash 模型相同,因此即使它在技术上输出 HTML5+JavaScript 应用程序,OpenLaszlo 平台给您的限制与 Flash 平台给您的限制相同。 OpenLaszlo 近两年没有正式发布,早在 Apple 从 iPad 中删除 Flash 和 Adob​​e 从 Android 4.1 等中删除 Flash 之前,那时 Flash 是“王者”,HTML5 还是相当新的东西。跨度>
    猜你喜欢
    • 1970-01-01
    • 2011-04-02
    • 2010-10-21
    • 1970-01-01
    • 2012-10-08
    • 1970-01-01
    • 1970-01-01
    • 2020-03-09
    • 1970-01-01
    相关资源
    最近更新 更多