Javascript 使用webkit运行iOS应用程序时选择延迟

Javascript 使用webkit运行iOS应用程序时选择延迟,javascript,jquery,ios,angularjs,webkit,Javascript,Jquery,Ios,Angularjs,Webkit,我一直在使用webkit和AngularJs在iOS上编写应用程序,因为我在编写应用程序的过程中,在页面上选择按钮时遇到了延迟。因此,我编写了一个指令,在touchstart上为按钮实现选择,但我仍然在选择时获得延迟 我写的指令如下: angular.module('test').directive('fastClick',function(){ // Runs during compile return { restrict: 'A', // E

我一直在使用webkit和AngularJs在iOS上编写应用程序,因为我在编写应用程序的过程中,在页面上选择按钮时遇到了延迟。因此,我编写了一个指令,在touchstart上为按钮实现选择,但我仍然在选择时获得延迟

我写的指令如下:

angular.module('test').directive('fastClick',function(){

    // Runs during compile
    return {       
        restrict: 'A', // E = Element, A = Attribute, C = Class, M = Comment
        link: function($scope, iElm, iAttrs, controller) {

            iElm.bind('touchstart',function(){
                var event = document.createEvent('Event');
                event.initEvent('select', true, true);
                iElm[0].addEventListener('select',true, false);
                iElm[0].dispatchEvent(event);
            });
        }
    };
});

而且我已经禁用了网页缩放功能。

正如您在评论中提到的,无论何时单击按钮,您都会遇到延迟。延迟的主要原因是移动浏览器实现了300毫秒的延迟,以决定用户是否希望双击以放大页面。我强烈推荐,这更详细地解释了问题。基本上是这样的:

在手机或平板电脑等触摸设备上,浏览器实现300毫秒的速度 用户停止触摸显示屏和屏幕之间的延迟 当浏览器执行单击时。最初是这样引入的 浏览器可以判断用户是否希望双击以放大屏幕 网页。基本上,浏览器会等待大约300毫秒,以查看用户 是双击,还是只在显示屏上单击一次。而300毫秒 看起来很短,但令人惊讶的是当你 移除延迟

一个可能的解决方案是,如果您不使用诸如Ionic之类的混合移动应用程序框架来使用

FastClick是一个简单易用的库,用于消除300ms 物理点击和手机点击事件触发之间的延迟 浏览器

另外,如果您决定使用FastClick,我建议您在
运行
块中对其进行初始化,如下所示:

angular.module('myModule', [])
  .run(function() {
    FastClick.attach(document.body);
  });
FastCklick经过大量测试,应用广泛,在许多设备上都能发挥出色的作用


另一个选择是使用。但是,ngTouch会覆盖ngClick,因此只会删除具有
ng click
属性的元素上的延迟。

您的意思是选择一个单击事件吗?单击延迟发生的任何按钮参见下面的我的答案。