Dblclick 事件处理程序未响应苹果设备



目前我的应用程序使用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;
}

您可能还需要将其添加到其他元素中,具体取决于拖动的元素。

最新更新