vue项目在客户端点击事件的问题

看评论的回答,我们客户端是c#写的,嵌入的网页也并非是使用webview链入的,他们里面也嵌入(?我不知道用什么词合适)了浏览器内核,比如使用:browser.url="前端路由"来渲染我们的页面。我不知是否和评论的回答移动端的问题有区别?


原问题:
vue项目,直接在浏览器内运行,点击事件正常;
嵌入到客户端以后,点击事件出现延迟。例如:

在浏览器中,页面加载出来以后,首页里点击模块A,页面跳转到模块A的页面;
客户端中,页面加载出来以后,首页里点击模块A,无任何响应,事件没有执行,等3——5秒以后再次点击,页面才进行跳转。

在客户端里打断点测试发现:node-modules/vue/dist/vue.esm.js中

if (useMicrotaskFix) {  
  var attachedTimestamp = currentFlushTimestamp;  
  var original = handler;  
  handler = original._wapper function (e) {  
    if (  
      // no bubbling, should always fire.  
 // this is just a safety net in case event.timeStamp is unreliable in // certain weird environments... 
     e.target === e.currentTarget ||  
      // event is fired after handler attachment  
     e.timeStamp >= attachedTimestamp ||  
      // bail for environments that have buggy         event.timeStamp implementations  
 // #9462 iOS 9 bug: event.timeStamp is 0 after history.pushState // #9681 QtWebEngine event.timeStamp is negative value 
     e.timeStamp <= 0 ||  
      // #9448 bail if event is fired in another document in a multi-page  
 // electron/nw.js app, since event.timeStamp will be using a different // starting reference  
     e.target.ownerDocument !== document  
    ) {  
      return original.apply(this, arguments)  
    }  
  };  
}

e.timeStamp >= attachedTimestamp 这一条件没有满足。
直到等待e.timeStamp满足条件以后才执行。

浏览器测试过程中没有发生过这种情况.
是哪里的问题呢?

阅读 635
评论
    3 个回答
    • 12.2k

    很早的时候,为了识别 tap 和缩放,移动端浏览器有个 300ms 的延迟。后来,浏览器如果发现 <meta name="viewport" content="user-scalable=no"> 缩放被禁止了,就会移除这个延迟。我猜测有可能是 webview(即应用里)没有做这个处理,导致出现你说的问题。

    可以临时引入一个 fastclick,看看问题会不会解决。

      点击是用的click? vue里面好像是支持tap的吧 换成tap事件看看呢

        • 2
        • 新人请关照

        您好,请问您的问题解决了没有,我也碰到了这个问题,fastclick并不能解决我的问题

          撰写回答

          登录后参与交流、获取后续更新提醒