如果我添加任何给定的 ESLint 规则,例如no-param-reassign在现有代码库中,我可能会遇到很多违规行为。
有没有一种好的方法可以以编程方式逐行添加对所有现有违规行为的抑制?
在示例案例中:
// eslint-diable-next-line no-param-reassign
param = foo;
Run Code Online (Sandbox Code Playgroud)
澄清
我确实希望在我的项目中遵守规则,保护我们编写的所有新代码。我不想手动修复所有发出违规行为的旧代码(如果可能,我希望脚本为我执行此操作或 eslint 本身)。这就是为什么我想压制所有现有的违规行为,但尊重所有新的违规行为。我的主要目标是尽快遵守新规则,以便在所有新代码上从中获取价值。我不介意旧的挥之不去的压制违规行为。
我创建了一个与键盘导航配合良好的复合小部件网格。我遇到的一个问题是,当当前焦点元素所在的网格中的某一行时,焦点将返回到该<body>元素。我希望能够将焦点拯救到最接近的有意义的交互元素(在上面或下面的行中)。
我的问题是:
\n当当前聚焦的元素从 DOM 中删除时,如何将焦点设置到最近的交互元素(仍在 dom 中)?
\n我尝试将焦点/模糊事件与 setTimeout 结合使用来获取正确的信号,但没有得到任何结果。
\n还尝试在当前聚焦的元素上使用 MutationObserver,这有效,但我遇到了问题,因为网格实际上是滚动的,因此由于行被虚拟滚动器回收,当前聚焦的元素可能会从 DOM 中删除,在这种情况下我不想救援焦点(这会导致网格不断向上滚动到新的“救援”焦点,并且您永远无法到达底部)
\nconst grid = document.querySelector(\'.grid\');\n\n// Remove all buttons/links from the natural tab order\ngrid\n .querySelectorAll(\'a:not([tabindex="0"]), button:not([tabindex="0"])\')\n .forEach(el => el.setAttribute(\'tabindex\', \'-1\'));\n\ngrid.addEventListener(\'keydown\', (e) => {\n // Prevent scrolling\n if (e.key === \'ArrowUp\' || e.key === \'ArrowDown\') {\n e.preventDefault();\n }\n if (e.key === \'ArrowUp\') moveFocus(grid, \'up\');\n if (e.key === \'ArrowDown\') moveFocus(grid, \'down\');\n if (e.key === \'ArrowLeft\') moveFocus(grid, \'left\');\n if (e.key …Run Code Online (Sandbox Code Playgroud)