单击后按钮保持焦点
Button retains focused after click
我有一个按钮,单击该按钮会导航到另一条路线。相关代码为:
<button (click)="goBack()" mat-button
aria-label="Previous Screen" role="navigation">
<mat-icon>keyboard_arrow_left</mat-icon>
</button>
点击处理程序:
goBack() {
this.location.back();
}
当我点击按钮时,路线改变了,但按钮获得了焦点。那是我做错了什么吗?
最简单的解决方案是:
button:focus {
outline: none;
}
但是,从按钮中删除轮廓绝对不利于可访问性。有些用户无法控制鼠标,需要能够使用键盘在页面中切换。删除轮廓会使这变得非常困难。最好防止按钮在点击时获得焦点。
在我看来,在 onMouseDown
中调用 e.preventDefault()
是一种更简洁的解决方案。这当然是一个可访问性友好的解决方案(但是该解决方案可能与您的项目不兼容)。
可以找到多个干净且易于访问的解决方案here。
干杯!
您想查看 HTMLElement.blur()
功能。我对 Angular 不太熟悉,但您需要有权访问该事件及其目标才能执行此操作。
像这样的东西应该可以工作:
<button (click)="goBack($event)" mat-button
aria-label="Previous Screen" role="navigation">
<mat-icon>keyboard_arrow_left</mat-icon>
</button>
对于 JS:
goBack(event) {
event.target.blur()
this.location.back();
}
我有一个按钮,单击该按钮会导航到另一条路线。相关代码为:
<button (click)="goBack()" mat-button
aria-label="Previous Screen" role="navigation">
<mat-icon>keyboard_arrow_left</mat-icon>
</button>
点击处理程序:
goBack() {
this.location.back();
}
当我点击按钮时,路线改变了,但按钮获得了焦点。那是我做错了什么吗?
最简单的解决方案是:
button:focus {
outline: none;
}
但是,从按钮中删除轮廓绝对不利于可访问性。有些用户无法控制鼠标,需要能够使用键盘在页面中切换。删除轮廓会使这变得非常困难。最好防止按钮在点击时获得焦点。
在我看来,在 onMouseDown
中调用 e.preventDefault()
是一种更简洁的解决方案。这当然是一个可访问性友好的解决方案(但是该解决方案可能与您的项目不兼容)。
可以找到多个干净且易于访问的解决方案here。
干杯!
您想查看 HTMLElement.blur()
功能。我对 Angular 不太熟悉,但您需要有权访问该事件及其目标才能执行此操作。
像这样的东西应该可以工作:
<button (click)="goBack($event)" mat-button
aria-label="Previous Screen" role="navigation">
<mat-icon>keyboard_arrow_left</mat-icon>
</button>
对于 JS:
goBack(event) {
event.target.blur()
this.location.back();
}