Panzoom: 捏合缩放不适用于 Android Chrome 55

创建于 2017-01-03  ·  14评论  ·  资料来源: timmywil/panzoom

问题的主题

捏缩放不适用于 Android Chrome 55。

更新 - 演示和测试页面也失败:
捏缩放不适用于带有 Chrome 55 的 Android 设备上的任何演示项目: https :
https://timmywil.github.io/jquery.panzoom/test/也失败了。

以上两个都在卸载 Chrome 更新的同一台设备上正常工作。

原始问题报告:
像#308 一样,我使用 jquery.panzoom 已经有一段时间了,它完美地工作。 Chrome 55 在 Android 上打破了它。 在我的情况下,平移很好,但捏缩放会导致平移和闪烁,但没有缩放。
如果我卸载 Chrome 的更新,问题就会消失。 问题在 IOS Safari 或旧版 Android Chrome 上不明显。

您的环境

  • jquery.panzoom 2.0.5 的版本
  • jquery 2.1.1 版本
  • Android Lollipop 上的 Chrome 55。

更新 - jquery.panzoom 3.2.2 有同样的问题,以及其他遏制问题。 捏缩放仅在 Android Chrome 55 上有问题。

最有用的评论

Chrome 55 似乎同时触发了触摸和指针事件。 对我有用的一个丑陋的修复方法是删除 pointerdown 侦听器。 所以第 940 行变为:

var str_down;
if (getChromeVersion() >= 55 && 'ontouchstart' in window) {
    str_down = 'mousedown' + ns + ' MSPointerDown' + ns;
}
else {
    str_down = 'mousedown' + ns + ' pointerdown' + ns + ' MSPointerDown' + ns;
}

有关 getChromeVersion() impl,请参阅http://stackoverflow.com/a/4900484/424563

用最新的 jQuery 测试。

所有14条评论

我可以确认捏缩放在 chrome 55 中也完全停止工作。 我希望我有编码知识甚至可以尝试修复。

我也有同样的问题。 使用 3.2.2 但它似乎适用于某些设备而不适用于其他设备。 例如,三星在 Android 6.0.1 和 Chrome 55 上无法运行,而在 Nexus 设备上完全相同的 Android 和 Chrome 运行完美。

同样的问题在这里。 您可以在线查看ti。 选择第一个选项。 当图像加载时,双指缩放在移动设备中不起作用。

https://yagolopez.github.io/Webcams_de_Asturias/www/#/app/meteo

请尽快修复它。

更正:

使用最新版本的 jquery 和 panzoom 似乎可以应用此 hack:

https://github.com/timmywil/jquery.panzoom/issues/303#issuecomment -267853623

我想知道是否有人可以帮助我解决我的困境:我使用 2.0.5 版本已经两年了,它在我的移动网站和 phonegap 应用程序中完美运行。 唯一的问题是捏放大 Android Chrome 55

我可以通过注释掉 #303 中提到的行来在 3.2.2 版中进行缩放。 问题是 3.2.2 引入了大小和定位问题,并且 setMatrix() 添加了明显虚假的翻译。 这个系统有几个未解决的问题,并且多次尝试修复 3.2.2,但它似乎不如 2.0.5 稳定。 (仅 Chrome 55 问题除外。)

我已经尝试在 2.0.5 中将 event.pageX 替换为 event.originalEvent.pageX 并将 event.pageY 替换为 event.originalEvent.pageY(正如 bodgybrothers 在 3.2.2 版的 #303 中建议的那样),但它没有修复它,我没有能力进一步尝试让 2.0.5 在 Android Chrome 55 上使用捏合缩放。

我最好的结果是 2.x 得到修复,但我不知道它是否仍在积极开发中。 在没有针对 2.x 的修复程序的情况下,看起来我唯一的选择是等待 3.x(4?)的新版本,该版本缺少人们提交更改的定位问题。

任何好心人都可以添加任何想法或信息来帮助我做出决定吗?
干杯
约翰

通过更新到 3.2.2 版,我也遇到了定位问题。
我通过向缩放容器添加高度和宽度来对其进行排序。
对我来说这有效。

position:relative; height:100%; transform:matrix(1, 0, 0, 1, 0, 0); transform-origin: 50% 50% 0;

Chrome 55 似乎同时触发了触摸和指针事件。 对我有用的一个丑陋的修复方法是删除 pointerdown 侦听器。 所以第 940 行变为:

var str_down;
if (getChromeVersion() >= 55 && 'ontouchstart' in window) {
    str_down = 'mousedown' + ns + ' MSPointerDown' + ns;
}
else {
    str_down = 'mousedown' + ns + ' pointerdown' + ns + ' MSPointerDown' + ns;
}

有关 getChromeVersion() impl,请参阅http://stackoverflow.com/a/4900484/424563

用最新的 jQuery 测试。

@dagged :谢谢,但我发现 Chrome 55 上的捏合缩放在 Panzoom 3.2.2 上运行良好,并在 #303 中进行了修复:
Had a quick hack in the code and commenting out line 1164: this.panning = true;
我对 Panzoom 3.2.2 的问题是定位搞砸了,在我的应用程序中, @pravid建议的上述修复似乎没有解决(无论如何,谢谢你 pravid。)

@dagged
就我而言,#303 解决方法不适用于 android 6 三星 Galaxy S6。
你的解决方法很好用!!! 拯救我的日子。 谢谢!!!

@dagged你是救世主。 谢谢!!!

@nich008
2.0.5 错误是 window.PointerEvent 为 true。
所以隐藏第32-39行,第74行; 第 80 行 var pointerEvents = false;
使用触摸事件无指针

@chfeizy
乍一看,这似乎解决了它。 谢谢!!!
[编辑] 是的 - 它运行良好 - 谢谢。

重复 #303

@jcnventura :这个问题是在 Panzoom 2.0.5 版上提出的,所以严格来说并不是#303 的骗局。 请注意,chfeizy 的评论修复了版本 2.0.5 的问题,这使其成为比 3.2.2 更可靠的解决方案。

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

jsblanco picture jsblanco  ·  19评论

timmywil picture timmywil  ·  10评论

PrinceDhankhar picture PrinceDhankhar  ·  16评论

gavJackson picture gavJackson  ·  3评论

kylegoines picture kylegoines  ·  4评论