天天看點

SAP Spartacus cxFocus Directive施加後導緻tabindex為-1的副作用研究

我第一次看到下圖第44行代碼時,以為僅僅是一個簡單的指派操作,把requiredTabindex的值賦成-1:

SAP Spartacus cxFocus Directive施加後導緻tabindex為-1的副作用研究

後來發現,這個requiredTabindex不是一個字段的值,而是一個set函數的名稱:

SAP Spartacus cxFocus Directive施加後導緻tabindex為-1的副作用研究

而這個requiresExplicitTabIndex,也不是一個屬性的名稱,而是一個get函數:

tabindex預設值為0,

SAP Spartacus cxFocus Directive施加後導緻tabindex為-1的副作用研究

隻要元素是A标簽,且href或者routerLink至少擁有一個,則requiesExplicitTabIndex傳回false,則HTML元素就不會遭受tabindex設定為-1的厄運。

注意一個問題,在requiesExplicitTabIndex被觸發時,a标簽的href屬性尚未生成:

SAP Spartacus cxFocus Directive施加後導緻tabindex為-1的副作用研究

這個屬性直到Angular的tick函數觸發的changeDetect裡才會被賦予a标簽的href屬性:

SAP Spartacus cxFocus Directive施加後導緻tabindex為-1的副作用研究

然而此時requiesExplicitTabIndex的evaluation早已結束。

繼續閱讀