是否可以直接访问OpenLaszlo DHTML运行时中视图的div?

时间:2012-08-12 11:35:42

标签: dhtml openlaszlo

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

1 个答案:

答案 0 :(得分:2)

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

采用以下简单示例应用程序:

<canvas debug="false">

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

</canvas>

如果使用查询字符串

编译应用程序
  

lzoptions =代理(真)%2Cruntime(DHTML)及目标= 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-&gt; sprite-&gt; __ LZdiv *属性。这意味着,对于每个视图,OpenLaszlo实例化一个特定于运行时的sprite对象,该对象又为DHTML运行时生成相应的div。

  

v1.sprite .__ LZdiv.style.backgroundColor   “rgb(255,0,0)”

以下是LzViewLzSprite课程实施的链接,如果您有兴趣了解内幕: