首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用IE11(通过cordova)在Surface上敲击屏幕不正确,从而伪造查看器选择元素

使用IE11(通过cordova)在Surface上敲击屏幕不正确,从而伪造查看器选择元素
EN

Stack Overflow用户
提问于 2017-06-23 06:34:32
回答 2查看 335关注 0票数 1

使用Surface 触摸屏在查看器中选择元素,有时,它似乎转换为旋转/缩放操作。在这种情况下,查看器旋转/移动,而不选择元素。

在记录事件时,有大量的鼠标向下/向上的事件,当鼠标不工作时,随着鼠标的移动。当select确实工作时,就会发生一个单击事件。

双击似乎工作正常。缩放/旋转等使用标准工具工作正常。

使用键盘覆盖触控板,您可以得到为Surface移动和点击工作,如预期和选择的元素。

在GETAC Windows 10平板电脑上运行相同的应用程序,select元素工作正常,因此它似乎与Surface相关。

无法更改浏览器,因为cordova应用程序在windows上使用IE11,这一点目前是固定的。

目前我能想到的唯一解决方案是完全删除标准导航工具(以某种方式),并重新创建一个select模式工具,该工具将忽略鼠标的任何移动,并使用按钮向下事件来选择元素。

对如何解决这个问题有什么建议吗?

技术细节: Windows 10 Pro,Surface,Browser: IE11,Viewer版本2.11,其他: WINJS81 cordova应用程序

谢谢你的帮助

EN

回答 2

Stack Overflow用户

发布于 2017-06-26 07:24:46

过去,我们在Surface上的触摸事件中遇到了问题。这听起来像触摸屏的边缘是过于敏感,并触发额外的触点。

当你举起设备,用一只手抓住,用你的另一只手触摸/选择一个3D物体时,这个问题会发生吗?

你能再试一次做一个选择,但这一次,确保你的另一只手没有握住屏幕的边缘?(也许把设备放在桌子的表面,所以你不会拿着它)

票数 0
EN

Stack Overflow用户

发布于 2017-07-07 04:55:33

找到了解决这个问题的方法。在基本工具控制器中的viewer3D中,有一行

代码语言:javascript
运行
复制
var kClickThreshold = 2;

此值将在代码中进一步向下使用,以确定是否发生了singleClick。它是通过比较XY在向下和向上的事件来实现的。

代码语言:javascript
运行
复制
var deltaX = _downX - event.canvasX;
var deltaY = _downY - event.canvasY;

_downX = -1;
_downY = -1;

if( Math.abs(deltaX) <= kClickThreshold && Math.abs(deltaY) <= kClickThreshold )
    _this.handleSingleClick( event );

如果移动高于此阈值,则如果低于此阈值,则不会触发singleClick。

测试并将这个值提高到5-7左右意味着元素的选择是一致的。(在选择发生的同时仍有一个小的旋转或缩放,但我假设这将是观众中需要调整的另一部分)

不幸的是,它确实需要编辑查看器代码,但非常容易。如果存在外部变量,我添加了代码来覆盖标准值。

如果公开更多的这些类型的属性,这样就不需要直接编辑代码,对将来的查看器dev来说就更好了。

尽管如此,让源代码能够在这个级别上进行调试还是很好的。

据猜测,Surface 4必须有一个更敏感的触摸系统,否则它也可能与IE11相关。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44714562

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档