一個以瀏覽器為基礎的反應時間測試只測量一個狹窄的區間:從頁面將測試面板切換為綠色「PRESS NOW」(立即按下)狀態的那一刻,到瀏覽器接收到你的指標點擊、Enter 鍵按下或空白鍵按下的那一刻之間的差距。這個區間會在同一個回呼函式上,使用單調遞增的 performance.now() 時計來擷取,而該回呼函式也負責變更面板,接著四捨五入到最接近的整數毫秒,並顯示為你的分數。因此,顯示出來的數字是你瀏覽器內部的「訊號到事件」差距,而不是對你的神經傳導速度的純粹量測。任何能縮短「從頁面準備訊號」到「瀏覽器記錄事件」之間路徑的因素,都會讓數字變低;任何會拉長這條路徑的因素,則會讓數字變高。這個框架之所以重要,是因為大多數搜尋如何作弊通過反應時間測試的人,想像的都是某種腳本或硬體技巧來繞過人為輸入;然而實際情況是,這個測試的設計方式是,唯一合法的操作就是「按下」這個動作本身,而且頁面已經過濾掉幾乎所有的捷徑。

所謂「作弊」取決於你想欺騙的是哪一層。如果你的目標是在隨意的瀏覽器小工具上拿到低分,限制條件是很嚴格的,而且大部分限制對頁面本身是可見的。如果你的目標是一個能反映你實際反應時間的有意義數字,那麼「作弊」其實是指消除你設定中的雜訊,讓分數成為對你反射動作的公平讀數。這兩個角度都很重要,而本文接下來會逐步說明技術上能做到什麼、什麼會被靜悄悄地過濾掉,以及哪些因素會基於合理理由改變分數。

how to cheat reaction time test
how to cheat reaction time test

瀏覽器反應時間測試實際上測量的是什麼

你面前的工具並不是一台校準過的實驗室儀器。它完全在一個瀏覽器分頁內執行,並用 JavaScript 時鐘來測量單一區間。當你按下 Start test(開始測試)時,頁面會從 1,500 到 4,000 毫秒之間挑選一個全新的隨機等待時間,讓面板維持在等待狀態,然後在同一個回呼函式中同時變更面板顏色與螢幕上的訊息。該回呼函式也會擷取一次 performance.now() 的讀數,作為官方的訊號時間戳。當你的按鍵抵達時,頁面會記錄另一次 performance.now() 的讀數,並顯示兩者相減的非負差值,四捨五入到最接近的整數毫秒。最佳成績是最近五次完成試驗中的最小值,平均成績則是這五次結果的算術平均數,同樣四捨五入到最接近的整數毫秒。

由於計時是取自瀏覽器回呼函式上的瀏覽器時鐘,這個數字其實包含的不只是你的決策時間。顯示器更新頻率、合成器排程、瀏覽器的工作排程、作業系統的輸入管線、滑鼠或鍵盤的傳輸、無線環境的狀況,以及瀏覽器分派事件的方式,全都包含在這個單一的毫秒數字中。兩台不同的裝置可能因為純粹的系統因素,而給同一個人明顯不同的分數;在另一台機器上出現較快或較慢的數字,可能反映的是系統,而非個人。

人們常嘗試的「作弊手法」及其失敗原因

人們想像用來贏過瀏覽器反應測試的大部分捷徑,都會與頁面的設計相牴觸。在綠色訊號出現之前按下,會取消擱置中的計時器、將該次試驗標記為 Too soon(太早),而且不會被加入結果列表中,因此以固定節奏觸發的自動點擊機器人,幾乎總是會在一次錯誤的起跑上賠掉分數。外部的自動點擊器和 turbo 按鍵硬體無法從外部讀取頁面的內部狀態,所以它們其實只是在猜測而非在反應,而且往往輸的比贏的多。預測節奏也沒有用,因為每次試驗的等待時間都會重新產生。

嘗試手法頁面的反應
在綠色出現前按下取消計時器,標記為 Too soon,不會加入結果
以固定節奏自動點擊在大部分試驗中都會在等待期間點到面板,因此大部分試驗會計入假起跑
外部腳本讀取 DOM無法從分頁外部觀察頁面內部狀態;訊號是由回呼函式控管的
根據計時預測綠色出現的時機隨機的 1,500–4,000 毫秒等待時間會打破任何固定模式
硬體 turbo 按鈕或快速連發開關無法繞過瀏覽器的事件管線,只會增加傳輸延遲
用 DevTools 掛鉤改寫 performance.now本地計時是在頁面內讀取的,所以頁面只會看到它自己的數字

每一列的模式都一樣:頁面唯一監聽的,就是發生在綠色回呼函式之後的一次真實按下;頁面唯一信任的時鐘,就是它自己的時鐘。一次假起跑並不會清除你先前已完成的試驗,所以狂點面板仍可能留下可用的最佳成績與平均成績,但每次提早落下的連點嘗試都是一次浪費掉的試驗,並不會讓分數變快。

真正能讓數字下降的因素

如果你真正的目標是頁面所能接受的最低公平分數,那麼真正有效的做法是「設定上的調整」,而不是「漏洞的利用」。讓瀏覽器分頁保持在前台、讓面板保持在視線範圍內,這樣你就不必依賴周邊視線的瞥見或延遲的系統焦點。試驗全程使用同一台裝置、同一種輸入方式、同一個視窗大小,以及同一種顯示模式,讓系統雜訊大致維持恆定。重複進行幾次試驗,並信任平均與最佳成績,而非單一異常值。這些步驟並不是捷徑,而是這個工具預期的使用方式,而且也是唯一能持續降低顯示數字的做法。

執行測試:使用反應時間測試工具

這個小工具本身就是觀察這些規則如何運作最純粹的方式,而 反應時間測試工具(Reaction Time Test) 完全在當下的分頁中執行,不需要登入、不需要上傳,也沒有排行榜。經過驗證的工作流程很短,值得確實依循,因為每一步都對應到上述限制中的某一項。

  1. 開啟頁面並選擇 Start test,讓面板保持在螢幕上可見,當它顯示等待訊息時先等待,不要按任何鍵。
  2. 在面板變綠並顯示 PRESS NOW 的瞬間,按下面板、Enter 鍵,或空白鍵;若提早按下,會計為一次假起跑。
  3. 讀取以毫秒為單位的最新結果,並注意該次試驗是成功記錄,還是被判定為 Too soon 而遭到拒絕。
  4. 在相同的裝置、瀏覽器與輸入條件下重複進行,讓最近五次、最佳與平均的數值可以相互比較。
  5. 當你想要取消擱置中的試驗或清除所有保留中的數字以開始一個全新的本地工作階段時,請使用 Reset all。

每一次完成的試驗都會在當下的分頁中保留最近五筆非負整數結果。在第五次完成試驗之後,較舊的結果就會被淘汰,因此你所看到的摘要只涵蓋可見的近期範圍。重新載入之後不會有任何資料留存,沒有帳號,也不會有離開你裝置的歷史紀錄;這也是為什麼這個頁面無法對你的數字套用運動基準、百分位排名、通過或不通過的標籤,或醫學上的閾值。

會悄悄讓分數膨脹或縮小的條件

即使你完全依照工作流程操作,分數仍可能因為與你反射動作無關的條件而產生波動。背景分頁、節電模式、變動的更新頻率行為、高 CPU 負載、遠端桌面軟體、接收器遲鈍的無線滑鼠,或已開啟手掌誤觸防護的觸控板,都可能在「訊號到事件」路徑上各自增加幾毫秒。在前台的本地瀏覽器與串流或遠端工作階段之間做比較,就是在比較兩個不同的系統,因此即使操作者相同,數字也不會吻合。

這個分數所涵蓋的也不只是人為決策的步驟,這代表同一個人在高更新頻率的有線滑鼠設定下,可能比在處於節電模式的筆電觸控板上,跑出明顯更快的數字。這就是為什麼公平的比較必須在試驗全程維持裝置、輸入方式、瀏覽器、視窗位置與顯示模式的一致,也是為什麼你應該執行多次試驗,而不是把單一異常值當作結論。這個小工具刻意不儲存任何實驗筆記,所以若你在滑鼠與鍵盤之間切換,你必須自己在頁面之外為這些條件加上標記。

當「作弊」得到的結果其實是在欺騙自己

值得釐清的是,這個頁面「不是」什麼。這個小工具不會測試聽力、不會診斷神經方面的狀況、不會評估駕駛適性、不會推薦訓練方式,也不會認證競賽表現。JavaScript 無法觀察到手指實際移動的物理瞬間、開關閉合的瞬間、無線封包離開裝置的瞬間,或顯示器像素發出綠光的瞬間,因此你所看到的任何數字,都是瀏覽器事件的軟體計時,而非對神經傳導的獨立量測。如果安全、健康、就業、無障礙或採購決策取決於某項反應量測,正確的做法是使用合適的、受控制的儀器並尋求專業指引,而不是在一個隨意的瀏覽器分頁上追求更快的毫秒數。

對其他所有人來說,實務上的問題在於哪些調整值得做、哪些不值得。提早按沒有用。狂按連點沒有用。預測節奏沒有用。從外部讀取頁面沒有用。真正有用的,是讓分頁維持在前台、堅持使用同一台裝置與同一種輸入方式、執行多次試驗,並參考平均與最佳成績而非單一的最低數字。這些才是誠實降低分數的做法,也正是這個頁面設計上所要獎勵的做法。如果你希望從相反的角度深入了解同一個工具,實用的公平通過測試指南 會更詳細地說明各項設定上的選擇。

如果你正在權衡各種選項,如何提升你的反應時間測試分數(How to Improve Your Reaction Time Test Score) 對此有更詳細的說明。