在 Chrome v55.02883.91 上的移动和 Android 系统 WebView v55.02883.91 上的捏缩放坏了
这适用于使用 Chrome(浏览器)的 Android 移动设备和使用 Android System WebView 的 Cordova 应用程序。
在以前版本的 Chrome 上(直到 v54,完美运行,即放大!
在 v55 上发生的只是平移,而不是缩放,平移的图像有时会在捏合手指之间“跳跃”并在图像在两个手指之间翻转时产生闪烁效果。
感谢报告这个问题。 一瞬间我的应用程序停止在缩放上工作,我不知道为什么。
我的应用程序也坏了。 新更新的 chrome 上的奇怪行为(拖动事件似乎滚动窗口,捏合事件......很奇怪)。 其他未更新 chrome 的设备工作正常。 昨晚更新了 chrome,它也坏了。
感谢您打开此问题。
由于这个原因,我的应用程序在 Chrome 桌面上也停止工作。
解决方案 - 添加touch-action: none;
到您的 panzoom 容器的 css,浏览器不会为该组件执行自己的触摸事件。
这是一个新事物: https :
对代码进行了快速修改并注释掉了第 1164 行:
this.panning = true;
允许再次对我进行缩放(并且不影响平移)。 除了初始化之外,我看不到 this.panning 在哪里设置为 false ...... YMMV。
对代码进行了快速修改并注释掉了第 1164 行:
this.panning = true;
允许再次对我进行缩放(并且不影响平移)。 除了初始化之外,我看不到 this.panning 在哪里设置为 false ...... YMMV。
谢谢,对我有用!
对代码进行了快速修改并注释掉了第 1164 行:
this.panning = true;
哇哦,它是.....
这个“黑客”可以解决问题! 现在适用于 android 55
在 iOS 10.2、Android 53 上重新测试 - 仍然像以前一样工作!
感谢虚拟!
对代码进行了快速修改并注释掉了第 1164 行:
this.panning = true;
允许再次对我进行缩放(并且不影响平移)。 除了初始化之外,我看不到 this.panning 在哪里设置为 >false ...... YMMV。
对我来说很好用...谢谢男人
我正在做我自己的缩放功能,但这暂时救了我……谢谢
在 android google webview 2016 12 月 14 日更新上测试...
对代码进行了快速修改并注释掉了第 1164 行:
this.panning = true;
这部分起作用。 谢谢!
我在注释掉那条线方面取得了部分成功,它现在从左上角而不是交互位置缩放,但这是一个巨大的改进。
看来最新的 chrome 已经改变了 pageX 和 pageY 引用在事件中的位置。
在 chrome 更改之前,所有浏览器都在 event.pageX ....
现在它位于 event.originalEvent.pageX...
我正在研究 panzoom 代码。 要使用鼠标事件使其在 chrome 上工作,请更改以下几行:
线 1191:1192
更改自:
startPageX = event.pageX;
startPageY = event.pageY;
到:
if (typeof event.pageX === 'undefined'){
startPageX = event.originalEvent.pageX;
startPageY = event.originalEvent.pageY;
}else{
startPageX = event.pageX;
startPageY = event.pageY;
}
在第 1232 行添加:
if (typeof coords.pageX === 'undefined'){
coords['pageX'] = coords.originalEvent.pageX;
coords['pageY'] = coords.originalEvent.pageY;
}
当我经历它时,更多的触摸事件会发生。
注释掉“this.panning = true;” 修复了它,但它不再那么平滑了,并且在旧设备上缩放变得非常滞后。 我假设注释掉它会使用更多的 CPU 能力,因此旧设备无法跟上。
您是否尝试更新到新版本 (3.2.2) 并注释掉给出的行?
我可以确认这个错误在 v3.2.2 和 Chrome 56 中仍然存在(并且修复有效)。
我不是 100% 确定,但我认为问题是:
该变量( this.panning
)似乎是为了防止同时触发_startMove
函数的多个实例。 它应该在endEvent
事件(第 1249 行)上重置为false
,但我想这不能正常工作(我还没有深入研究以找出原因)。 这可能是 ThorConzales 发现修复会导致性能降低的原因。
替代修复:我发现在_startMove
函数的末尾(第 1255 行之后)添加this.panning = false;
也可以解决此问题。 我没有在旧设备上测试过,所以我无法确认这是否有助于降低性能,但如果其他人可以,我会很感激。
谢谢@JamesCatt会尝试你的选择。
@timmywil !?
@JamesCatt替代修复对我不起作用并且缩放再次被破坏(由用户报告,因为我没有测试自己的设备)。
评论第 1164 行(this.panning = true)对我不起作用。 我在第 1143 行作弊,更改 moveEvent = 'pointermove' tomoveEvent = 'touchmove',然后就可以了,我不确定它是否会导致任何其他问题。
我找到了一个解决这个问题的黑客。
我们应该在初始化时将options.which
为-1
。
$("a.panzoom-elements").panzoom({
which: -1,
});
__警告__
此 hack 仅适用于触摸设备。 也许这对鼠标不起作用。
@JamesCatt的替代方案对我不起作用。 @hshiozawa的 hack 至少在运行 Android 7.1.2 的 Pixel 上
最有用的评论
对代码进行了快速修改并注释掉了第 1164 行:
this.panning = true;
允许再次对我进行缩放(并且不影响平移)。 除了初始化之外,我看不到 this.panning 在哪里设置为 false ...... YMMV。