瀏覽器滑鼠滾輪測試,測量的是抵達頁面的滾輪事件,把每一個事件依方向分類,並顯示瀏覽器回報的原始水平與垂直位移量──它並不會回傳一個經過校正的距離,也不是硬體規格。在這個情境下,「準確」代表這項測試能可靠地捕捉到你的滾輪或觸控板在這次作業階段中傳送給瀏覽器的內容,而且能精確判斷每個動作以哪個軸向為主。它並不是在量測移動了幾毫米、USB 輪詢頻率,或輸入延遲,因為瀏覽器在任何頁面看到滾輪事件之前,就可能已經把它們合併、平滑化、加速,或是抑制掉了。請把總數與方向分類當作活動紀錄來使用,用原始位移量的成對數值來比較感覺相似的動作,並把帶正負號的累計值當成一種持續變動的淨額,而不是距離讀數。這種理解方式,正是讓滾輪測試結果變得可解讀、而不是造成誤導的關鍵,也是「讀取頁面」與「讀取滾輪」之間的差別。

滾輪與觸控板拿在手上感覺起來是一致的,但同一個動作卻可能產生非常不同的位移數值,這就是為什麼在信任任何數字之前,「準確」都需要先被謹慎定義。Mouse Scroll Test 會提供給你原始的瀏覽器資料,加上一套透明的分類規則,讓你能判斷問題出在裝置、驅動程式、瀏覽器,還是你的測試方法,而不是憑空猜測滾輪本身。

mouse scroll test accuracy
mouse scroll test accuracy

「Mouse Scroll Test Accuracy」實際上代表什麼

要讓一項滾輪測試有用,有三件事必須做到準確:測試必須計入瀏覽器送達的每一個滾輪事件、必須每次都以相同方式為事件貼上標籤,而且必須保留原始數值大小、不能悄悄把它們轉換成別的東西。Mouse Scroll Test 就是依照這樣的約定設計的。它只接受出現在一個可見虛線區域內、有限數值的 WheelEvent deltaX 與 deltaY,每次事件都會讓總計計數器與一個方向分類各自加一,儲存最近一次的原始數值對,並把帶正負號的位移量加進兩個累計總數中。非有限的合成位移量會被拒絕,計數器溢位也有防護機制,所以顯示出來的數值絕不會是內部運算捨入所產生的假象。

這裡所說的準確,並不等於校正。同一個 WheelEvent 的位移量,依事件來源不同,可能代表像素、行數、頁數,或瀏覽器自訂的其他單位。兩個手感完全一樣的裝置,在螢幕上可能產生非常不同的數字,而這樣的差距是瀏覽器與作業系統處理管線本身的特性,並不是滾輪或這項測試的缺陷。請把總數與分類計數,當作這次作業階段中確實送達頁面內容的忠實紀錄,並把原始位移量的成對數值,當作瀏覽器自己對每個事件的描述。

這項測試會記錄什麼這項測試不會量測什麼
送達測試區域的滾輪事件總數USB 輪詢速率
方向分類(上、下、左、右、無)經過校正的物理距離
最近一次的原始 deltaX 與 deltaY 數值對輸入延遲或時序
帶正負號的 X 與 Y 累計總數硬體健康狀態、編碼器品質,或無線訊號
零位移事件,歸類在自己的分類中跨裝置的標準化分數

執行滾輪測試並讀取數字

這套工作流程刻意設計得很簡短。每一步都是頁面能直接展示給你看的內容,而在相同的瀏覽器與裝置設定下重複執行,正是讓單次結果變成有意義比較的關鍵。

  1. 把指標放在虛線測試區域上方,垂直與水平方向轉動滾輪或滑動觸控板。
  2. 比較事件總數、方向分類、最近一次的位移數值對,以及帶正負號的 X 與 Y 累計值。
  3. 在相同的瀏覽器與裝置設定下重複執行,然後選擇 Reset test 清除本機端的作業階段資料。

虛線區域的存在是有原因的。送達該區域的滾輪事件不會觸發頁面正常的捲動行為,這讓目標保持不動,方便你在同一位置比較不同方向。虛線區域外的動作行為則一切正常,而且完全不會被計入,所以請確保你希望計入總數的每一個事件,都是在指標停留於虛線邊界內時發生的。這個區域可以取得鍵盤焦點並顯示可見外框,但鍵盤方向鍵並不會被視為滾輪輸入,所以它們不會移動任何計數器。

每個方向分類是如何被選定的

每一個滾輪事件都會恰好落入五個可見分類中的一個,而這套規則是刻意設計的,讓同一個動作永遠對應到同一個標籤。整套規則精簡到可以放進一張表格裡。

情況標籤
deltaX 與 deltaY 皆為零none(無)
|deltaY| ≥ |deltaX| 且 deltaY 為正值up(上)
|deltaY| ≥ |deltaX| 且 deltaY 為負值down(下)
|deltaX| > |deltaY| 且 deltaX 為負值left(左)
|deltaX| > |deltaY| 且 deltaX 為正值right(右)
兩軸的非零量值相等依 deltaY 的正負號判定為 up 或 down

量值相等時,永遠會選擇垂直方向,這代表一個感覺上是斜向的動作,只會出現在一個分類裡。這是一種顯示上的取捨,並不是在宣稱這個動作本身如何──斜向滾動輸入確實完全可能同時包含兩個軸向的移動,只是這項測試每個事件只顯示一個標籤,好讓分類結果維持可讀性。如果發現某個方向似乎缺席,在懷疑是裝置問題之前,應該先檢查上述這套規則。傳統的垂直滾輪通常只會產生上與下的事件,而可傾斜的滾輪與觸控板則可能也會產生水平位移量。

為什麼累計值可能會讀出接近零的結果

X 與 Y 的累計總數是帶正負號的加總。每一次正的 deltaX 都會加進 X 的總數,每一次負的 deltaX 則會從中扣除,Y 也是同樣的道理。這讓累計數字成為一種持續的淨額,而不是總移動距離,所以方向相反的動作會彼此抵消。

Y 的累計值接近零,並不代表這次作業階段中滾輪完全沒有動過。它代表向上的位移量與向下的位移量大致相互抵銷了。事件總數,以及上、下這兩個方向分類的計數,仍然會反映出那些活動,這也是為什麼方向計數才是判斷滾輪是否真的有移動的較好紀錄。用累計值來察覺長時間作業階段中某個方向上的偏移,用方向計數來確認移動確實有發生過。

什麼原因會讓某個方向沒有出現

有好幾個原因會讓某個方向在分類中缺席,而大多數都不是缺陷。傳統的垂直滑鼠滾輪本來就不會產生水平位移量,所以在你換成可傾斜滾輪、觸控板,或具備水平捲動功能的裝置之前,左與右的分類會一直保持空白。瀏覽器也可能在頁面看到滾輪事件之前就把它們攔截掉,這在平滑捲動、無障礙縮放,或啟用了頁面層級快捷鍵時很常見。手勢設定、遠端桌面軟體,以及某些驅動程式,也可能在事件抵達之前就把它們合併或改寫。

觸控板上的觸控捲動,只有在它產生滾輪事件時才會被計入。有些作業系統與瀏覽器會把觸控板手勢視為慣性平移,而不是離散的滾輪事件,這類手勢完全不會出現在結果中。如果你懷疑某個方向缺失,可以在同一個瀏覽器作業階段中,把同一個動作重複做兩到三次,觀察事件總數是否有變動。如果總數不動、分類也沒有變化,通常代表這些事件從未送達頁面;如果總數在預期的分類中有變動,就代表事件確實送達了,而裝置或驅動程式送出的內容也符合瀏覽器的預期。

這個工具無法診斷什麼

滾輪測試的準確度有其明確範圍,值得把這個範圍牢記在心。這個頁面記錄的是瀏覽器在這次作業階段中送達測試區域的內容。它並不會量測 USB 輪詢頻率、硬體編碼器彈跳、無線訊號品質、驅動程式健康狀態,或滾輪實際物理移動的精確時刻。瀏覽器的滾輪事件在頁面接收到之前,可能已經被合併、平滑化、節流,或加速處理過,所以事件頻率與位移量大小都不能被當成原始的硬體訊號來看待。

當瀏覽器層級的測試結果無法給出結論時,針對硬體層面的判斷,正確的下一步是製造商的診斷工具與合格的技術支援。而在瀏覽器層級的判斷上,這項測試已經足夠:它會告訴你滾輪事件是否有送達、送達的方向為何、瀏覽器選擇回報的量值大小為何,以及這些事件在整個作業階段中加總起來是穩定不變,還是持續偏移。Reset 會清除本機端的作業階段資料,重新整理頁面效果也一樣,而且沒有任何資料會離開這個分頁,所以每次重新執行都會從乾淨的狀態開始。

若想進一步了解,請參閱線上計分板的準確度:限制與重設邏輯

若想進一步了解,請參閱滾輪測試詳解:這些數字代表什麼