我正在开发一个Cordova应用程序,其中有一个与Leafletjs在它的核心构建的地图。地图上有标记,当点击时会弹出一个信息框。
我想摆脱300毫秒的延迟在网站周围的链接一般-基本上在所有的锚(一个标签)。我不需要将其应用于Leafletjs标记,因为当前用户点击标记时没有延迟。
我已经安装了fastclick (https://github.com/ftlabs/fastclick/) -它很好地消除了a标签的延迟-但是它在Leafletjs标记上产生了问题,现在有时需要两个cicks才能触发。
我已经尝试在Leafletjs创建的标记上添加'needsclick‘类,根据快速单击文档,它应该使fastclick忽略它们--但是它似乎没有任何影响。(示例:)
$('.leaflet-marker-icon').addClass('needsclick');
$(function() {
FastClick.attach(document.body);
});因为leafletjs标记点击事件是在img上而不是a标签上的,如果我可以将Fastclick附加到a标签上,我认为这可以解决我的问题,但是我已经尝试将标签作为层传递给Fastclick,但这也不起作用。(示例:)
$(function() {
var Anchors = document.getElementsByTagName("a");
FastClick.attach(Anchors);
});下面是一个演示行为的最小jsfiddle (需要iDevice):https://jsfiddle.net/y723oet0/2/
如果任何人有任何建议,将不胜感激。
发布于 2015-05-01 03:32:49
fastclick.js保留一个名为this.targetElement的内部变量,该变量跟踪您当前正在点击的元素。当touchend事件激发时,fastclick.js会检查触控结束的元素是否与触控开始的元素相同。
在地图上正常的新点击时,this.targetElement开始时为空,并且一切正常。如果元素被快速点击,那么this.targetElement = <a>和就会停留在该状态,这会导致fastclick.js内部函数onMouse拒绝下一次地图单击。
我们通过修改fastclick.js来解决这个问题,如下所示:
diff --git a/fastclick.js b/fastclick.js
--- a/fastclick.js
+++ b/fastclick.js
@@ -606,6 +606,8 @@
this.sendClick(targetElement, event);
}
+ this.targetElement = null;
+
return false;
};
// end of patch - don't copy this line此修补程序导致在地图外部开始的touchend事件上清除this.targetElement变量,以便地图上的下一次点击不会被阻止。
https://stackoverflow.com/questions/28197921
复制相似问题