(点击)事件不适用于 IOS 设备 - angular 10 个应用
(click) event is not working only on IOS devices - angular 10 app
我注意到我的按钮在 IOS 设备上不起作用,似乎没有调用点击事件。在 windows、android、Linux 上一切正常。由于我无权访问任何 mac 我试图在 browserStack 上调试它,每次我尝试单击按钮时都会收到此错误:
ERROR TypeError: undefined is not an object (evaluating 't.path[4]')
我可能完全错了,但我认为这可能与按钮内部的 SVG 矩形有关(我将其用作进度条),在我访问它的矩形加载事件中找到它的长度。 Maby 它被称为“太早”,因此它无法正确访问 rect。以前我使用 ngAfterViewInit
和里面的 setTimeout
来管理相同的效果。
<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 制作的第一个项目,所以我有可能犯了一个简单的错误。任何帮助将不胜感激!
我找到问题的根源了。我试图在点击事件中使用 event.path
数组。看起来它在 Safari 上不可用。我使用 event.composedPath
而不是 event.path
解决了这个问题
参考文献:
https://developer.mozilla.org/en-US/docs/Web/API/Event/composedPath
我注意到我的按钮在 IOS 设备上不起作用,似乎没有调用点击事件。在 windows、android、Linux 上一切正常。由于我无权访问任何 mac 我试图在 browserStack 上调试它,每次我尝试单击按钮时都会收到此错误:
ERROR TypeError: undefined is not an object (evaluating 't.path[4]')
我可能完全错了,但我认为这可能与按钮内部的 SVG 矩形有关(我将其用作进度条),在我访问它的矩形加载事件中找到它的长度。 Maby 它被称为“太早”,因此它无法正确访问 rect。以前我使用 ngAfterViewInit
和里面的 setTimeout
来管理相同的效果。
<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 制作的第一个项目,所以我有可能犯了一个简单的错误。任何帮助将不胜感激!
我找到问题的根源了。我试图在点击事件中使用 event.path
数组。看起来它在 Safari 上不可用。我使用 event.composedPath
而不是 event.path
解决了这个问题
参考文献:
https://developer.mozilla.org/en-US/docs/Web/API/Event/composedPath