是否有一种方法可以捕获dojo/aspect
和aspect.after
的按键事件?
我使用的是第三方Javascript API (ESRI JS API v3.4),它提供了一个用于在地图上绘制图形的小部件。draw toolbar
小部件有一个onDrawEnd
事件,该事件提供绘制的图形对象的形状作为参数。我需要确定用户在使用这个小部件在地图上绘图时是否按了CTRL
或SHIFT
键,但我使用aspect.after(drawingToolbar, "onDrawEnd", myhandlerfunction, true)
来连接绘图事件。
我知道如何确定是否按下键的唯一方法是使用event
对象,当使用aspect
时不提供dojo/on
。
任何想法我怎么能确定如果一个键是按在这里?
也许你必须走另一条路才能赶上Key-Event。
这就是我如何在文本框中捕获"Enter"事件的。当按下enter键时,调用zoomToAnlage()函数。重要的是,这个事件侦听器已经在初始阶段加载。当然,这并不能完全解决你的问题,但也许它展示了一种你如何处理它的方法。
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();
}
});
});
}
这是dojo/keys的链接:http://dojotoolkit.org/reference-guide/1.8/dojo/keys.html?highlight=keys#id2问候,米里亚姆
道场。Aspect不能连接到事件,只能连接到函数。然而,你应该能够aspect到处理该事件的函数,并窃取它的参数。
aspect.after(drawingToolbar, "someHandlerFunctionWithTheEventArg",
function(args){
// access the event from the args here
}, true);