代码改变世界

zk调用js(转)

2012-01-11 16:03  OOA  阅读(1976)  评论(0编辑  收藏  举报

 

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"); }

  1. <button label="SayHello">  
  2.      <attribute name="onClick">      
  3.      <![CDATA[      
  4.          Clients.evalJavaScript("testAlert();");  
  5.      ]]>      
  6.      </attribute>      
  7. </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>