目前我的应用程序使用FancyTree jquery插件,dblclick事件不仅适用于苹果设备,当在iPhone 7/8上设置的Google Chrome开发人员模式下运行时,它会在控制台中给我以下错误:[干预]由于目标被视为被动,无法阻止被动事件侦听器中的默认值。
但是,当关闭设备工具栏时,它工作正常。与Android和Windows设备相同。
在苹果设备上安装铬也不起作用。
可能是什么问题?
谢谢。
安装 doubletap.js 不会给出任何结果。插件中事件处理程序的代码
.on("click" + ns + " dblclick" + ns, function(event) {
if (opts.disabled) {
return true;
}
var ctx,
et = FT.getEventTarget(event),
node = et.node,
tree = self.tree,
prevPhase = tree.phase;
// self.tree.debug("event(" + event.type + "): node: ", node);
if (!node) {
return true; // Allow bubbling of other events
}
ctx = tree._makeHookContext(node, event);
// self.tree.debug("event(" + event.type + "): node: ", node);
try {
tree.phase = "userEvent";
switch (event.type) {
case "click":
ctx.targetType = et.type;
if (node.isPagingNode()) {
return (
tree._triggerNodeEvent(
"clickPaging",
ctx,
event
) === true
);
}
return tree._triggerNodeEvent(
"click",
ctx,
event
) === false
? false
: tree._callHook("nodeClick", ctx);
case "dblclick":
ctx.targetType = et.type;
return tree._triggerNodeEvent(
"dblclick",
ctx,
event
) === false
? false
: tree._callHook("nodeDblclick", ctx);
}
} finally {
tree.phase = prevPhase;
}
});
[干预] 由于目标被视为被动,无法阻止被动事件侦听器中的默认值
这在Chrome中是一个晦涩难懂的问题。它是由Chrome 56中的更改引起的,该更改旨在提高移动设备上的滚动性能。
解决方法是添加如下所示的 CSS 规则:
#modal_valve
{
touch-action: none;
}
您可能还需要将其添加到其他元素中,具体取决于拖动的元素。