Vibration API

可用性有限

此特性不是基線特性,因為它在一些最廣泛使用的瀏覽器中不起作用。

大多數現代移動裝置都包含振動硬體,這使得軟體程式碼可以透過使裝置震動來為使用者提供物理反饋。 振動 API 允許 Web 應用訪問此硬體(如果存在),如果裝置不支援,則不做任何操作。

概念與用法

振動被描述為一種開關脈衝的模式,其長度可能不同。 該模式可以由單個整陣列成,表示振動的毫秒數,或者由描述振動和暫停模式的整數陣列組成。 振動由一個方法控制:Navigator.vibrate()

單次振動

您可以透過指定單個值或僅包含一個值的陣列來使振動硬體脈衝一次。

js
navigator.vibrate(200);
navigator.vibrate([200]);

這兩個示例都使裝置振動 200 毫秒。

振動模式

一系列值描述了裝置振動和不振動的交替週期。 陣列中的每個值都會轉換為整數,然後交替解釋為裝置應振動的毫秒數和裝置不應振動的毫秒數。 例如:

js
navigator.vibrate([200, 100, 200]);

這會使裝置振動 200 毫秒,然後暫停 100 毫秒,然後再次使裝置振動 200 毫秒。

您可以指定任意數量的振動/暫停對,並且可以提供偶數個或奇數個條目; 值得注意的是,您不必在最後一個條目中提供暫停,因為振動會在每個振動週期結束時自動停止。

取消現有振動

使用值為 0、空陣列或包含所有零的陣列呼叫 Navigator.vibrate() 將會取消任何當前正在進行的振動模式。

持續振動

一些基本的 setIntervalclearInterval 操作將允許您建立持久振動。

js
let vibrateInterval;

// Starts vibration at passed in level
function startVibrate(duration) {
  navigator.vibrate(duration);
}

// Stops vibration
function stopVibrate() {
  // Clear interval and stop persistent vibrating
  if (vibrateInterval) clearInterval(vibrateInterval);
  navigator.vibrate(0);
}

// Start persistent vibration at given duration and interval
// Assumes a number value is given
function startPersistentVibrate(duration, interval) {
  vibrateInterval = setInterval(() => {
    startVibrate(duration);
  }, interval);
}

當然,上面的程式碼片段沒有考慮到振動的陣列方法; 持久的基於陣列的振動將需要計算陣列項的總和,並基於該數字建立間隔(可能還需要額外的延遲)。

介面

其他介面的擴充套件

在支援振動的裝置上引起振動。 如果不支援振動,則不執行任何操作。

規範

規範
Vibration API

瀏覽器相容性

另見