[英](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 矩形有关(我将它用作进度条),在矩形加载事件中我正在访问它以查找它的长度。 可能它被称为“太早”,因此它无法正确访问矩形。 以前我使用带有setTimeout
的ngAfterViewInit
来管理相同的效果。
<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.