Javascript 传单,复制/调用拖动事件
我在我的项目中使用了Angular 6和传单1.2 我想重现当用户在传单地图上保持右键或左键单击时的拖动效果。 例如,我希望能够在不断按空格键时开始拖动地图 我已经测试了很多特性,比如在传单地图上调用“mousedown”、“mouseup”、“click”、“drag”、“dragstart”事件,但是什么都没有发生;事件正在正确调用,但未发生拖动事件 我仍然在阻止它,而网络似乎没有搜索这个功能:o 谢谢你的帮助!Javascript 传单,复制/调用拖动事件,javascript,angular,leaflet,draggable,drag,Javascript,Angular,Leaflet,Draggable,Drag,我在我的项目中使用了Angular 6和传单1.2 我想重现当用户在传单地图上保持右键或左键单击时的拖动效果。 例如,我希望能够在不断按空格键时开始拖动地图 我已经测试了很多特性,比如在传单地图上调用“mousedown”、“mouseup”、“click”、“drag”、“dragstart”事件,但是什么都没有发生;事件正在正确调用,但未发生拖动事件 我仍然在阻止它,而网络似乎没有搜索这个功能:o 谢谢你的帮助! 关于您可以轻松添加事件侦听器,以便在按下空格键时进行检测。但是,您需要有一些方
关于您可以轻松添加事件侦听器,以便在按下空格键时进行检测。但是,您需要有一些方法来告诉地图移动的方向。假设您也希望通过键盘执行此操作,下面是一些示例代码,用于在按住空格键时通过箭头键添加/删除滚动
function scrollMap(e) {
const key = e.key;
if (key == 'ArrowUp'){
//scroll map 100px up, or whatever you want
}
//repeat for other arrow keys, or inputs of your choice
}
document.addEventListener('keydown', (event) => {
const key = event.code;
if (key == 'Space'){
listen();
}
});
document.addEventListener('keyup', (event) => {
const key = event.code;
if (key == 'Space'){
stopListen();
}
});
function listen(){
document.addEventListener('keypress', scrollMap);
}
function stopListen(){
document.removeEventListener('keypress', scrollMap);
}
注释
1) 根据页面布局,最好将事件附加到地图元素,而不是文档
2) event.code与event.key等的选择将取决于您的目标浏览器。有关更多信息,请参阅
3) 您可能希望使用shift/ctrl/alt来代替空格键,因为它们内置在键盘事件中,因此更容易检测和使用跨浏览器。有关更多信息,请参见您好!谢谢你的回复。事实上,我没有正确解释这个问题:/I我想保留移动光标时产生的拖动效果。我不想按固定的像素数拖动地图。默认的键盘箭头已经做得很好了。我只想以不同的方式调用拖动事件,例如按空格键,然后移动鼠标拖动地图。我刚刚尝试了另一件事:我将“窗口”对象上的事件侦听器附加到跟踪“mousemove”事件上,并通过MouseEvent的movementX和movementY使用panBy()方法拖动我的地图。如果您只想通过按住空格键启用/禁用标准鼠标拖动,那么只需设置您的地图。dragging.enable()或disable()在上面的document.addEventListener函数中,而不是在listen()/stopListen()中,如果地图是使用draging:false选项集创建的,则上面的函数只允许在按住空格键时通过拖动鼠标移动地图。正确吗?这就是你想要做的吗?是的,我想这样做,而不需要在地图上单击(左/右单击)来开始拖动。如果你不想使用键盘或鼠标移动来平移地图,你希望用户如何能够沟通他们希望地图移动到的位置?