You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular项目中jsPlumb图节点图标click事件在安卓原生Chrome不触发

修复方案

1. 关闭jsPlumb默认移动端事件拦截

jsPlumb托管的节点容器默认会绑定touchstart、touchend等触摸事件,会阻止内部元素原生点击事件冒泡,在jsPlumb初始化逻辑中添加对应配置即可:

// 全局禁用jsPlumb默认移动端触摸事件拦截
jsPlumb.Defaults.TouchEnabled = false;

// 若需保留节点拖拽功能,仅放开内部元素事件权限
jsPlumb.draggable(nodeElement, {
  touchOptions: {
    passive: false
  }
});

2. 适配移动端触摸事件

安卓原生Chrome中click事件容易被系统默认触摸行为拦截,替换为适配移动端的触摸事件即可:

  • 首先在app.module.ts导入Angular官方手势支持模块:
import { HammerModule } from '@angular/platform-browser';

@NgModule({
  imports: [
    // 其余原有引入项
    HammerModule
  ]
})
  • 把HTML中图标绑定的(click)事件替换为(tap)事件:
<mat-icon 
  class="kps-node-top-left-icon-na"
  (tap)="editCourseUserSubscription(learningPlanWithUserAccessRightsGraphNode.stepId)">
  face
</mat-icon>

3. 扩大图标点击热区

移动端规范最小可点击区域不小于48*48px,你当前设置的图标尺寸仅20px,很容易出现点击判定失败的情况,修改对应CSS即可:

[id^=courseWindow] mat-icon {
    cursor: pointer;
    z-index: 21;
    /* 新增以下配置 */
    padding: 14px;
    margin: -14px; /* 抵消内边距带来的位置偏移
    touch-action: manipulation; /* 禁用浏览器默认触摸缩放、长按选中行为,避免拦截点击事件
    pointer-events: all !important;
}

4. 排查父类样式冲突

如果你的window-not-clickable类设置了pointer-events: none属性,上述CSS中添加的pointer-events: all配置会覆盖该限制,保证图标可以正常响应事件。

内容的提问来源于stack exchange,提问作者Eric Malalel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 16:06:01