Zk中调用js有两种方式:
1. 通过action。
2. 通过atrribute
下面对这两种方式做一个简要介绍。
1. action方法:
概述:
某些行为在客户端用JavaScript代码处理更为合适,例如动画和图像转滚(image rollovers)。为了客户端执行javaScript代码,ZK引入了客户端行为(CSA)的概念。使用CSA,开发人员可以监听任何JavaScript时间且在客户端执行JavaScript代码。
CSA语法:
Action=”[onfocus|onblur|onmouseover|onmouseout|onclick|onshow|onhide…]:javascript;”
注意CSA是完全独立于ZK事件监听器的,尽管他们或许有相同的名字,例如onFocus。不同点包括:
Ø CSA在客户端执行,且在服务器端的ZK时间将监听器被调用前发生。
Ø CSA代码用JavaScript编写,而ZK事件将监听器用Java编写。
Ø CSA可以注册你的目标浏览器允许的任何事件,而ZK近仅支持《ZK开发手册》中事件章节所列事件。
实例:
<zk>
<script>
function create(){
alert(‘test’);
}
</script>
<window>
<menubar>
<menuitem src="/img/add.png" id="create" label="新建" action="onClick:create()" />
</menubar>
</window>
</zk>
2. attribute方式
概述:zk本身是在服务器端执行的脚本,为了便于执行本地的javascript方法,zk提供了一套方法:Clients.evalJavaScript(),如:
实例:
function testAlert() { alert("111"); }
- <button label="SayHello">
- <attribute name="onClick">
- <![CDATA[
- Clients.evalJavaScript("testAlert();");
- ]]>
- </attribute>
- </button>
当js中需要传入变量时,要注意格式:
<script>
function selt(mm){
alert(mm);
}
</script>
<listbox id="flowTemp" checkmark="true">
<attribute name="onSelect">
<![CDATA[
Clients.evalJavaScript("selt('"
+ (String) flowTemp.getSelectedItem().getValue() + "');");
]]>
</attribute>
</listbox>