在ZK中处理鼠标滚动

Handle MouseScroll in ZK

本文关键字:鼠标 滚动 处理 ZK      更新时间:2023-09-26

我想在zk中处理鼠标滚动事件,但找不到。我可以使用JavaScript来处理,但我想将通知发送到服务器端,以便服务器将数据发送回客户端。有什么方法可以在控制器中获取该事件吗。或者做

comp.addEventListener(EVENTNAME,mylistener);

我想知道上面EVENTNAME的价值是什么。

据我所知,只有当项目有滚动条时,ON_SCROLL事件才会工作;如果您想捕获mousewheel事件,您需要在javascript中执行此操作,并创建自己的事件。

以下是我在分页网格中捕捉鼠标滚动以使用鼠标滚轮推进页面的操作;向服务器端发送通知的部分如下:this.getPaginal().fire('nPage',nextPage)

<zk>
<zscript>Object[] o = new String[150];
</zscript>
<hlayout id="layout" vflex="1" hflex="1">
    <grid id="grid1" width="300px" autopaging="true" height="300px"  mold="paging" vflex="true">
        <rows>
            <row forEach="${o }">
                <label value="item ${forEachStatus.index}"/>
            </row>
        </rows>
    </grid>
</hlayout>
<zscript><![CDATA[
  {
    grid1.setWidgetOverride("bind_", "function(){'r'n"+
      "this.$supers('bind_', arguments);'r'n"+
      "var node = this.$n();'r'n"+
      "if (node.addEventListener)'r'n"+ 
      "    node.addEventListener('DOMMouseScroll', this.proxy(this.onMouseWheel), false);'r'n"+
      "node.onmousewheel = this.proxy(this.onMouseWheel);'r'n"+
      "}");
    grid1.setWidgetOverride("onMouseWheel", 
     "function(event){'r'n" + 
      "    var delta = 0;'r'n" + 
      "    if (!event) /* For IE. */ 'r'n" + 
      "        event = window.event;'r'n" + 
      "    if (event.wheelDelta) { /* IE/Opera. */'r'n" + 
      "        delta = event.wheelDelta / 120;'r'n" + 
      "        if (window.opera) 'r'n" + 
      "            delta = -delta;'r'n" + 
      "    }'r'n" + 
      "    else 'r'n" + 
      "        if (event.detail) {'r'n" + 
      "            delta = -event.detail / 3;'r'n" + 
      "        }'r'n" + 
      "    if (delta) {'r'n" + 
      "        console.log('delta = ' + delta); " +
      "        var currPage = this.getPaginal().getActivePage(); 'r'n" +
      "        var nextPage =  Math.min (this.getPageCount() - 1, Math.max (0, currPage - delta)); 'r'n" +
      "        this.getPaginal().fire('onPaging', nextPage);'r'n" +
      "    }'r'n" + 
      "    if (event.preventDefault) 'r'n" + 
      "        event.preventDefault();'r'n" + 
      "    event.returnValue = false;'r'n" + 
      "}    ");
  }


    ]]></zscript>

尝试org.zkoss.zk.ui.Events.ON_SCROLL或org.zkos.zk.ui.Events.ON_StCROLLing.