【发布时间】:2019-11-17 11:27:02
【问题描述】:
我想在我的页面上使用navigator.vibrate。
这是我的代码:
var canVibrate = "vibrate" in navigator || "mozVibrate" in navigator;
if (canVibrate && !("vibrate" in navigator))
{
navigator.vibrate = navigator.mozVibrate;
}
$(document).on('click', '.answer', function (eve) {
$this = $(this);
navigator.vibrate(222);
// some other code ...
这适用于 Android 设备,但在 iOS 上(我在某些 iOS 设备上在 Firfox、Chrome 和 Safari 上进行了测试)代码将在这一行被破坏。
这是为什么呢?
【问题讨论】:
-
从开发者的角度来看(试图建立一个很棒的网站),振动 api 没有暴露在 iOS 上使用似乎很荒谬;毕竟,它已经在其他浏览器中可用将近 8 年了。但是,从 Apple 的角度来看……想想所有糟糕的网站,它们会通过垃圾邮件振动破坏您的浏览体验。他们足够聪明,可以看到它会变成另一个流行世界末日。这就是为什么我们不能拥有美好的事物。
-
我不同意。 API 可能需要用户交互才能成功调用该函数,并且可能有用户选项来控制它在设置中的工作方式。如果 Apple 没有在 iOS 中实现 API 的原因是因为它可能被滥用,那么这实际上是短视的,因为 API 可以为残疾用户启用额外的触觉反馈。可以提出合理的论点,即在 Safari/Webkit 中未实施违反了美国残疾人法案 (ADA)。
-
我想知道什么样的代码可以让我们在 Android 上使用它,同时让其他一切都在 iOS 上运行而不会中断执行。有没有人测试过github.com/SomaticLabs/haptics.js
-
@isaacdre 那么为什么它没有破坏安卓用户的任何东西呢?这是那些有缺陷的逻辑之一。如果您非常害怕用户,请询问他们是否要允许特定站点的振动。如果他们不 - 阻止它。就这么简单
-
关于 ADA CubicleSoft 的有趣点,我想知道他们是否从这个角度对其进行了审查。 @Andrew,我想澄清一下,我不为 Apple 工作/与 Apple 合作,我对他们的工作没有发言权。据我所知,Apple 有严格控制对其硬件的访问的历史,因此它的品牌,我预计这可能是不为 web iOS 启用触觉的原因。另一种理论是,Apple 不希望他们的手机在网络上振动,因为他们希望保持网络体验不如 iOS 应用程序复杂......这显然意味着他们可以控制流量和美元流量。
标签: javascript vibration