javascript - 如何使用Javascript在Safari中访问iPhone的新3D触摸?

标签 javascript ios iphone safari 3dtouch

苹果已经宣布,其新款iPhone 6S和6S + users can now use pressure to interact with their apps。 Web开发人员是否有JavaScript API可以在标准网站上利用此新功能?如果是这样,如何实施?

最佳答案

是的,根据W3C,a new force property has been recently added to the spec of the Touch interface,范围从0(最小力)到1(最大力)。这已可用于iOS9上的Safari(不确定Chrome或其他浏览器是否已实现)。

快速回答:

要访问此属性,只需调用

touchForce = evt.originalEvent.touches[0].force;


touchstarttouchmove事件侦听器中。

此实现存在一些问题:


touchstart上,力将非常接近0,因为一旦检测到第一个压力信号便会调用该力。
如果增加或减小压力,touchstart事件将不会再次触发。
touchmove是不可靠的,因为在读取新的force之前,您必须等待位置更改,但情况并非总是如此。


解:

为了解决这个问题,您可以设置一个超时,在touchstart之后每隔几毫秒评估一次此力,然后在touchend上清除超时。

var tO = 0;
$("#div1").on("touchstart", startTouch);
$("#div1").on("touchend", endTouch);

function startTouch(evt){
    evt.preventDefault();
    touchForce = evt.originalEvent.touches[0].force;
    tO = window.setTimeout(function(){startTouch(evt)}, 100);
    // Do something with touchForce
}

function endTouch(){
    touchForce = 0;
    window.clearTimeout(tO);
    // Do something else
}


Try it out in this CodePen I created

这有点hacky,但是可以用。也许将来他们会创建一个新的forcechange事件,但这是我们目前所拥有的。

对不起,我用JQuery更快地说明了这一点。

关于javascript - 如何使用Javascript在Safari中访问iPhone的新3D触摸?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34030281/

相关文章:

javascript - Angular-redux 设计 - 数组选择器

javascript - UIWebView、缩放和 elementFromPoint

iphone - iOS 开发—— View 如何动态反射(reflect)应用内设置

ios - UITextField 触摸事件在 UIScrollView 中不起作用

iphone - 如何对 UIImage 进行去饱和处理?

iphone - UIImagePickerController 使应用程序崩溃,有时会重新启动设备 - 内存警告问题

javascript - 变量错误标签的正确位置 - Bootstrap/Jquery

javascript - 检测图像何时加载失败

javascript - 从服务器检索 JSON.parse() 字符串

ios - 尝试让我的 CoreData 显示在我的应用程序中