繁体   English   中英

(点击)事件仅适用于 IOS 设备 - angular 10 应用程序

[英](click) event is not working only on IOS devices - angular 10 app

我注意到我的按钮在 IOS 设备上不起作用,似乎没有调用点击事件。 在 windows、android、Linux 上一切正常。 由于我无法访问任何我试图在 browserStack 上调试它的 mac,所以每次我尝试单击按钮时都会收到此错误:

ERROR TypeError: undefined is not an object (evaluating 't.path[4]')

我可能完全错了,但我认为它可能与按钮内部的 SVG 矩形有关(我将它用作进度条),在矩形加载事件中我正在访问它以查找它的长度。 可能它被称为“太早”,因此它无法正确访问矩形。 以前我使用带有setTimeoutngAfterViewInit来管理相同的效果。

  <rect
    #rect
    width="96"
    height="96"
    rx="8"
    fill="none"
    stroke-width="4"
    [ngStyle]="{
      'stroke-dasharray': strokeDasharray,
      'stroke-dashoffset': strokeDashoffset
    }"
    (load)="getRectLength()"
  />
  getRectLength() {
    this.length = this.rect.nativeElement.getTotalLength();
    this.strokeDasharray = this.length;
  }

代码:
https://github.com/mateuszkornecki/chess-clock/tree/master/src

现场演示:
https://mateuszkornecki.github.io/chess-clock/settings

重现步骤:
只需单击带有计数器的大按钮之一,单击后它应该开始计数。

我在几个 IOS 设备上对其进行了测试,无论 IOS 版本如何,它都不适用于所有人。 那是我用 Angular 制作的第一个项目,所以我有可能犯了一个简单的错误。 任何帮助将不胜感激!

我找到了问题的根源。 我试图在 click 事件上使用event.path数组。 看起来它在 Safari 上不可用。 我通过使用event.composedPath而不是event.path解决了这个问题

参考: https://developer.mozilla.org/en-US/docs/Web/API/Event/composedPath

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM