Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/470.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何检测设备是否有可控震源?_Javascript_Html_Vibration - Fatal编程技术网

Javascript 如何检测设备是否有可控震源?

Javascript 如何检测设备是否有可控震源?,javascript,html,vibration,Javascript,Html,Vibration,使用navigator.vibrate可以让智能手机和平板电脑震动。但是,该功能在桌面浏览器上也可用,因此它的存在对于检测振动电机是否实际可用并不有用 当然,我可以检查设备是否运行移动操作系统,以获得一个合适的近似值,但是有没有合适的方法来检测振动是否实际可用 原因:我在一个游戏中使用振动,并包括一个开/关按钮。在台式电脑上显示此按钮没有任何意义。不幸的是,听起来您不能: 显然这是故意的,为了避免暴露可访问性 设置(被视为敏感),以允许UAs提供 退一步,也可能成为指纹识别的障碍 从 说: 如果

使用navigator.vibrate可以让智能手机和平板电脑震动。但是,该功能在桌面浏览器上也可用,因此它的存在对于检测振动电机是否实际可用并不有用

当然,我可以检查设备是否运行移动操作系统,以获得一个合适的近似值,但是有没有合适的方法来检测振动是否实际可用


原因:我在一个游戏中使用振动,并包括一个开/关按钮。在台式电脑上显示此按钮没有任何意义。

不幸的是,听起来您不能:

显然这是故意的,为了避免暴露可访问性 设置(被视为敏感),以允许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如果这是一个结论性的回答,你应该用相关的引语写一个答案。