是否有用于访问DHTML运行时中OpenLaszlo视图的HTML div对象的公共API?在OpenLaszlo文档中似乎没有这样的例子,但从技术上讲它应该是可能的。
答案 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对象。您可以通过调用
来访问divv1.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)”