我的Angular代码看起来像这样>
<input type='text' (blur)='saveData()'>
<button (click)='navigateToPage2()'>
Run Code Online (Sandbox Code Playgroud)
从正在聚焦的文本框跳转到按钮单击,两个事件之间存在竞争条件.
问题是按钮点击被忽略,因为模糊事件首先触发并在调用服务器调用保存数据时将微调器带到屏幕上.
我该如何解决这个确切的问题?
在模糊事件之前是否存在使点击事件触发的黑客攻击?
香草javascript -
document.addEventListener("click", function(){ alert('click fired');});
Run Code Online (Sandbox Code Playgroud)
带角度 2 + -
@HostListener('window: click', ['$event'])
public iosSafariClick(e: any): void {
alert('event fired');
}
Run Code Online (Sandbox Code Playgroud)
这些方法都不适用于 iPad 上的 IOS Safari。
除非我单击某个按钮、超链接或任何可操作的项目,否则不会触发Click事件。
我的目标是在“div 元素”上触发模糊事件。
为此,我试图检查是否在 HTML 正文上触发了任何点击事件,并检查它是否不在“div 元素”上。
HTML >
<html>
<body>
<div id= 'menu'>123...</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
Angular 组件 > 打字稿 >
@HostListener('window: click', ['$event'])
public iosSafariClick(e: any): void {
if(e.target.id !== 'menu'){
this.menu = false; // to close menu
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法使用 javascript 或 angular 来克服这个障碍?