很基本的功能,按下鍵盤 PageDown 的時候應該要捲動網頁吧? 為什麼沒捲呢?

因為 focus(焦點)不在你要捲動的東西上啊。 於是寫了一個套件 FocuScroll,可以設定快速鍵,按下去會修正焦點,讓捲動鍵發揮作用就是了。

主要精神是聚焦在可以捲動的主要內容上,我自己很常用,覺得對鍵盤瀏覽來說很重要。



舉例,有此現象的網頁:

  1. Javadoc - Overview (Java SE 10 & JDK 10 ) Javadoc,預期 PageDown 會捲動右邊的大框框,但實際不會

    現在版本是 Java 10,一進去就會自動跳到「搜尋框」所以 PageDown 不會捲動; Java 8 之前的版本則是因為焦點一開始在 <frameset> 最外層,而不是最大那一塊 <frame> 內容,所以也不會動。

  2. 內嵌 codepen 或 youtube 等等使用 <iframe> 的網頁,點了裡面按鈕,焦點就被吃進去,再按 PageDown 就不會捲動外面那層了。
    例如這邊放個跟捲軸有關的 youtube 影片,點播放以後 就不能捲動這篇文章了。

原理和免責

如何找到真正要捲動的內容區塊? 其實我還沒想到很好的方法,現在是從畫面中央的元素開始,透過一些硬做的規則搜尋,細節會改來改去,但原則是要通過一些已知形式,都寫在原始碼的測試中。 可以想見一定有支援不了的網頁,那就再加測試、再修正吧。


Firefox 設定快速鍵的方法

藏在擴充套件管理的小齒輪圖示,裡面的「管理鍵盤快速鍵」功能。

Firefox「管理鍵盤快速鍵」功能

為什麼沒有人注意這個問題

鍵盤瀏覽比較會碰到這個問題,如果是用滑鼠滾輪,或筆電的觸控板滾動就不會遇到。