您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
让没有震动的设备模拟震动效果
// ==UserScript== // @name Vibrate Simulator // @namespace https://qinlili.bid // @version 0.1 // @description 让没有震动的设备模拟震动效果 // @author 琴梨梨 // @match *://*/* // @grant none // @run-at document-body // ==/UserScript== (function() { 'use strict'; const sleep = delay => new Promise((resolve) => setTimeout(resolve, delay)) var css = "@keyframes shake { 10%, 90% { transform: translate3d(-1px, 0, 0); } 20%, 80% { transform: translate3d(+2px, 0, 0); } 30%, 70% { transform: translate3d(-4px, 0, 0); } 40%, 60% { transform: translate3d(+4px, 0, 0); }50% { transform: translate3d(-4px, 0, 0); }}"; var style = document.createElement('style'); if (style.styleSheet) { style.styleSheet.cssText = css; } else { style.appendChild(document.createTextNode(css)); } document.getElementsByTagName('head')[0].appendChild(style); let needBreak=false navigator.vibrate=async time=>{ if(time==0){ document.body.style.animation="" needBreak=true }else{ if(time.length){ for(let num=0;time[num];num=num+2){ if(needBreak){ needBreak=false; break; } document.body.style.animation="shake "+time[num]+"ms ease-in-out" await sleep(time[num]) document.body.style.animation="" await sleep(time[num+1]) } }else{ document.body.style.animation="shake "+time+"ms ease-in-out" setTimeout(()=>{document.body.style.animation=""},time) } } } })();