之前以為JS做不到這種使手機震動的功能咧织,今天發(fā)現(xiàn)了這個API嗓袱,親測在anriod qq瀏覽器下可用
判斷兼容
瀏覽器對振動API的支持情況,一個好的習(xí)慣就是在使用之前要檢查一下當前你的應(yīng)用環(huán)境习绢、瀏覽器是否支持振動API渠抹。下面就是檢測的方法:
var supportsVibrate = "vibrate" in navigator;
在window.navigator對象里就只有一個關(guān)于振動的API:vibrate蝙昙。
振動API基礎(chǔ)應(yīng)用
這個navigator.vibrate函數(shù)可以接受一個數(shù)字參數(shù),也可以接受一個數(shù)字數(shù)組梧却,當使用數(shù)組參數(shù)時奇颠,奇數(shù)位的數(shù)值是震動秒數(shù),偶數(shù)位為等待秒數(shù)放航。
// 振動2秒
if (navigator.vibrate) {
navigator.vibrate(2000);
} else if (navigator.webkitVibrate) {
navigator.webkitVibrate(2000);
}
// 振動多次
// 參數(shù)分別是震動3秒大刊,等待2秒,然后振動1秒
navigator.vibrate([3000, 2000, 1000]);
// 震動 'SOS' in Morse.
window.navigator.vibrate([100,30,100,30,100,200,200,30,200,30,200,200,100,30,100,30,100]);
如果想停止震動三椿,你只需要向navigator.vibrate方法里傳入0缺菌,或一個空數(shù)組:
// 停止振動
navigator.vibrate(0);
navigator.vibrate([]);
對navigator.vibrate方法的調(diào)用并不會引起手機循環(huán)振動;當參數(shù)是一個數(shù)字時搜锰,振動之后發(fā)生一次伴郁,然后就停止下來。當參數(shù)是數(shù)組時蛋叼,震動會按數(shù)組里的值震動焊傅,然后就停止振動。
持續(xù)震動
我們可以簡單的使用setInterval 和 clearInterval 方法產(chǎn)生讓手機持續(xù)震動的效果:
var vibrateInterval;
// 開始震動
function startVibrate(duration) {
navigator.vibrate(duration);
}
// 停止震動
function stopVibrate() {
// 清除間隔和停止持續(xù)振動
if(vibrateInterval) clearInterval(vibrateInterval);
navigator.vibrate(0);
}
//在給定的持續(xù)時間和間隔時開始持續(xù)的振動
//假定一個數(shù)字值
function startPeristentVibrate(duration, interval) {
vibrateInterval = setInterval(function() {
startVibrate(duration);
}, interval);
}
上面的這段代碼只是針對振動參數(shù)是一個數(shù)字的情況狈涮,如果參數(shù)是數(shù)組狐胎,你還需要計算一下它的總共持續(xù)時間,然后根據(jù)它的特征來進行循環(huán)歌馍。