Web API見本市
センサー権限不要スマホ推奨判定中...

Vibration API

端末のバイブレーションモーターを振動時間のパターン配列で制御できるAPI。

MDNのドキュメントを見る

1対応判定

ブラウザ対応バージョン
Chrome30+(Android実機のみ動作)
Firefox11+(Android実機のみ動作)
Safari未対応

備考: デスクトップはAPIが存在しても実際には振動しない

2権限フロー

  1. 権限不要このAPI

    API呼び出しだけで動く。プロンプトも操作起点の縛りもない

  2. ユーザージェスチャー必須

    ボタンクリック等のユーザー操作の中でしか呼べない。プロンプトは出ない

  3. 権限プロンプトあり

    呼び出すとブラウザが許可/ブロックのプロンプトを表示し、ユーザーが選ぶ

  4. iOS独自requestPermission

    iOSではrequestPermission()を操作起点で呼び、明示的に許可を得る

権限プロンプトは無いが、ユーザー操作なしのバックグラウンド振動はブラウザ側で抑制される。

3ライブデモ: 振動パターンのプリセットと自作シーケンサー

4コードスニペット

TypeScript(要約版)
// 単発の振動(ミリ秒)
navigator.vibrate(200);

// パターン: [振動, 休止, 振動, ...] のミリ秒配列
navigator.vibrate([100, 50, 100, 50, 300]);

// シーケンサーで自作パターンを組み立てる
function buildPattern(steps: boolean[], stepMs = 120): number[] {
  const pattern: number[] = [];
  let run = 0;
  let vibrating = steps[0];
  if (!vibrating) pattern.push(0); // 先頭が休止なら0ms振動から始める
  for (const on of steps) {
    if (on === vibrating) {
      run += stepMs;
    } else {
      pattern.push(run);
      run = stepMs;
      vibrating = on;
    }
  }
  pattern.push(run);
  return pattern;
}

// 停止は0または空配列
navigator.vibrate(0);