Javascript 如何检测设备是否有可控震源?
使用navigator.vibrate可以让智能手机和平板电脑震动。但是,该功能在桌面浏览器上也可用,因此它的存在对于检测振动电机是否实际可用并不有用 当然,我可以检查设备是否运行移动操作系统,以获得一个合适的近似值,但是有没有合适的方法来检测振动是否实际可用Javascript 如何检测设备是否有可控震源?,javascript,html,vibration,Javascript,Html,Vibration,使用navigator.vibrate可以让智能手机和平板电脑震动。但是,该功能在桌面浏览器上也可用,因此它的存在对于检测振动电机是否实际可用并不有用 当然,我可以检查设备是否运行移动操作系统,以获得一个合适的近似值,但是有没有合适的方法来检测振动是否实际可用 原因:我在一个游戏中使用振动,并包括一个开/关按钮。在台式电脑上显示此按钮没有任何意义。不幸的是,听起来您不能: 显然这是故意的,为了避免暴露可访问性 设置(被视为敏感),以允许UAs提供 退一步,也可能成为指纹识别的障碍 从 说: 如果
原因:我在一个游戏中使用振动,并包括一个开/关按钮。在台式电脑上显示此按钮没有任何意义。不幸的是,听起来您不能: 显然这是故意的,为了避免暴露可访问性 设置(被视为敏感),以允许UAs提供 退一步,也可能成为指纹识别的障碍 从 说: 如果图案为空列表,或者设备无法振动, 然后返回true并终止这些步骤
似乎无法检测设备是否真的会以某种方式振动,因此当我遇到类似问题时,如果操作系统似乎不是移动设备,我只是使用了一种回退方法来发声:
var navigatorTest = (function(ua){
return function(){
for(var i=0; i<arguments.length; ++i) {
if(ua.indexOf(arguments[i]) >= 0)
return true;
}
return false;
};
})(navigator.userAgent);
var bleep = ((
(navigatorTest("iPad", "iPod", "iPhone", "Android") || !navigatorTest("Macintosh", "Windows", "X11", "Linux"))
&& (navigator.vibrate || navigator.webkitVibrate || navigator.mozVibrate || navigator.msVibrate)
) || (
function(ctx){
return function(len){
var osc = ctx.createOscillator();
osc.connect(ctx.destination);
osc.start();
setTimeout(function(){
osc.stop();
}, len);
};
}
)(
window.AudioContext ? new AudioContext() : new webkitAudioContext()
)).bind(navigator, 300); // Vibration/bleep time
var navigatorTest=(函数(ua){
返回函数(){
对于(变量i=0;i=0)
返回true;
}
返回false;
};
})(navigator.userAgent);
变量bleep=((
(导航测试(“iPad”、“iPod”、“iPhone”、“Android”)||!导航测试(“Macintosh”、“Windows”、“X11”、“Linux”))
&&(navigator.vibrate | | | navigator.webkit振动| | | navigator.mozVibrate | | navigator.msVibrate)
) || (
功能(ctx){
返回函数(len){
var osc=ctx.create振荡器();
osc连接(ctx目的地);
osc.start();
setTimeout(函数(){
osc.stop();
},len);
};
}
)(
window.AudioContext?新建AudioContext():新建webkitAudioContext()
)).bind(导航器,300);//振动/气泡时间
虽然这不是你的意思(不是功能检测),但它给出了一个合理的回退。@ZougenMoriver如果这是一个结论性的回答,你应该用相关的引语写一个答案。