有時候我們希望元素被focus的時候頁面不發生滾動,例如我們點擊一個按鈕打開一個彈框,此時點擊彈框中的關閉按鈕隱藏彈框后,希望鍵盤的焦點回到之前的按鈕上,我們就會執行如下JavaScript代碼:
button.focus();
但是有時候會帶來另外一個比較嚴重的體驗問題,那就是如果彈框顯示之后我們頁面發生了滾動,原本點擊的按鈕跑到了屏幕顯示區域之外,這個時候,按鈕再次focus的時候就會觸發按鈕元素scrollIntoView重定位,瀏覽器發生滾動,表現為突然的跳動
如果想要聚焦同時不發生滾動,其實很簡單,使用一個全新的API參數preventScroll就可以了,例如:
button.focus({ preventScroll: true });
注:不兼容IE。