道场方面和按键

时间:2013-06-20 18:04:25

标签: javascript javascript-events dojo event-handling

有没有办法使用dojo/aspectaspect.after来捕捉关键新闻事件?

我正在使用第三方Javascript API(ESRI JS API v3.4),它提供了一个用于在地图上绘制图形的小部件。 draw toolbar窗口小部件有一个onDrawEnd事件,它将绘制的图形对象的形状作为参数提供。我需要确定用户是否在使用此窗口小部件在地图上绘图时按下CTRLSHIFT键,但我使用aspect.after(drawingToolbar, "onDrawEnd", myhandlerfunction, true)来连接绘图事件。

我知道如何确定是否按下某个键的唯一方法是使用event对象,使用aspectdojo/on时使用的对象不提供。

如何确定我是否可以确定是否按下此键?

2 个答案:

答案 0 :(得分:1)

也许你们会采取另一种方式来赶上一个关键事件。

这就是我在文本框中捕获“Enter”-Event的方式。当按下Enter键时,调用函数zoomToAnlage()。这个事件监听器已经在ini阶段加载是很重要的。 当然,这不是你的问题的完全决心,但也许它显示了你如何处理它。

    function initKielAnlagenNummernSuchen(){

    queryTaskAnlagenNummern = new esri.tasks.QueryTask(restServicesLocation + NameSearchService + "/MapServer/23");

    queryallAnlagenNummern = new esri.tasks.Query();
    queryallAnlagenNummern.returnGeometry = true;
    queryallAnlagenNummern.outFields = ["ANLAGE"];

    require(["dojo/keys","dojo/dom","dojo/on"], function(keys, dom, on){
        on(dom.byId("selectAnlagenNummer"), "keypress", function(evt){
            var charOrCode = evt.charCode || evt.keyCode;
            if (charOrCode == keys.ENTER) {
                zoomToAnlage();
            }
        });
    });

}

以下是道场/钥匙的链接:http://dojotoolkit.org/reference-guide/1.8/dojo/keys.html?highlight=keys#id2 此致,Miriam

答案 1 :(得分:0)

dojo.aspect无法连接到事件,只能连接到函数。但是,您应该能够处理正在处理该事件的函数,并窃取它的args。

aspect.after(drawingToolbar, "someHandlerFunctionWithTheEventArg", 
    function(args){
      // access the event from the args here
    }, true);