当前位置:首页 > JavaScript

js实现震动

2026-04-07 02:48:14JavaScript

使用 navigator.vibrate API

现代浏览器支持通过 navigator.vibrate 方法触发设备震动。该方法接受一个参数,可以是数字(单次震动时长)或数组(震动模式交替)。

// 单次震动200毫秒
navigator.vibrate(200);

// 震动模式:震动200ms,暂停100ms,再震动300ms
navigator.vibrate([200, 100, 300]);

兼容性检查

调用前建议检查浏览器支持情况,避免在不支持的设备上报错:

if ('vibrate' in navigator) {
    navigator.vibrate(200);
} else {
    console.log('Vibration API not supported');
}

取消震动

通过传递 0 或空数组可以立即停止震动:

navigator.vibrate(0);  // 停止震动

注意事项

  • 用户交互要求:部分浏览器要求震动必须由用户交互(如点击事件)触发,不能在页面加载时自动执行。
  • 移动端支持:主要适用于移动设备,桌面浏览器可能不支持或无效。
  • 权限限制:某些浏览器可能需要用户授权震动权限。

封装实用函数

以下是一个封装好的震动函数,包含错误处理和回调:

js实现震动

function triggerVibration(pattern, onSuccess, onError) {
    try {
        if ('vibrate' in navigator) {
            const success = navigator.vibrate(pattern);
            if (success && typeof onSuccess === 'function') {
                onSuccess();
            } else if (!success && typeof onError === 'function') {
                onError('Vibration failed');
            }
        } else {
            throw new Error('API not supported');
        }
    } catch (err) {
        if (typeof onError === 'function') {
            onError(err.message);
        }
    }
}

// 使用示例
triggerVibration(
    [100, 50, 100],
    () => console.log('Vibrated successfully'),
    (err) => console.error('Error:', err)
);

标签: js
分享给朋友:

相关文章

js防抖和节流实现

js防抖和节流实现

防抖(Debounce)的实现 防抖的核心思想是在事件被触发后,延迟执行回调函数。如果在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口大小调整等场景。 function debounce…

js实现vue路由

js实现vue路由

Vue 路由的基本实现 在 Vue.js 中实现路由功能通常使用 Vue Router 库。Vue Router 是 Vue.js 官方的路由管理器,用于构建单页面应用(SPA)。 安装 Vue R…

js 实现跳转

js 实现跳转

使用 window.location.href 进行跳转 通过修改 window.location.href 可以跳转到指定 URL,浏览器会加载新页面: window.location.hre…

js实现轮播代码

js实现轮播代码

基础轮播实现 使用HTML、CSS和JavaScript创建一个简单的轮播效果。HTML部分定义轮播容器和图片元素。 <div class="carousel"> <div c…

js 实现递归

js 实现递归

递归的基本概念 递归是指函数直接或间接调用自身的过程。在JavaScript中,递归通常用于解决可以分解为相似子问题的问题,如阶乘、斐波那契数列、树形结构遍历等。 递归的实现要点 基线条件(Base…

js实现弹框

js实现弹框

使用 alert 实现简单弹框 JavaScript 的 alert 方法可以直接显示一个简单的弹框,内容为纯文本: alert("这是一个简单的弹框"); 使用 confirm 实现确认弹框…