如何在Google Chrome中模拟捏合缩放?

103
我正在为一款使用javascript编写的移动应用程序开发一个捏合缩放功能,我希望使用Google Chrome浏览器的移动设备仿真功能进行测试。但是我找不到测试捏合手势的方法。
我已经尝试了在互联网上能找到的所有方法(按住Shift并移动鼠标,按住Alt并移动鼠标),但都没有成功。在Google Chrome中是否有“本地”的方式来模拟捏合缩放手势呢?
顺便提一下,我正在使用MacOS版本的Google Chrome,版本号为59.0.3071.86。

2
“Shift + Hold click down + Move mouse up / down” 这种方法只在开发工具的设备模拟中有效,如果能在正常使用中也能用就太好了... :( (对于那些有触摸板的人,只需像在手机上一样使用捏合手势即可,它应该可以工作 - 对我来说有效 -。) - aderchox
9个回答

116

Shift + 鼠标单击并拖动视口

对我有效。唯一的问题是touchstart事件将返回1作为originalEvent.touches


4
这在我的Chrome 72上无法运行。是否有什么改变了? - nnyby
1
@nnyby 这很奇怪,在我使用的Chrome 72和Windows 10上它是正常工作的。 - Josh Powlison
1
@vsync :在Apple Macbook Pro的触摸板上,shift + 鼠标点击和拖动无法使用。对此有什么建议吗? - darKnight
2
@vsync:这篇指南似乎是针对较旧版本的Chrome,因为我在最新版本的Chrome中看不到那里给出的选项。 - darKnight
22
人们使用它的意图并不能实现,Shift + 单击只是模拟文档缩放手势。这意味着它无法与自定义 JavaScript 一起使用,以便检测例如 WebGL 画布、特定 DOM 元素或其他前端项目中实现手势的非标准方式上的捏合缩放。 - MacK
显示剩余10条评论

13

在Chrome v.71.x.x中,您可以按下开发工具的“切换设备工具栏”并在此后按住SHIFT并点击鼠标拖动来进行捏合缩放。


7

捏合手势在不同的浏览器中有不同的监听器,但有一个出色的轻量级库称为hammer.js可以在所有浏览器中轻松处理捏合、滑动等手势,遗憾的是它不支持桌面版Chrome,因此你无法轻松调试你的Web-Mobile代码。

在桌面版Chrome上使用hammer库时,Shift-Mouse点击和拖动也无法正常工作,它会激活hammer的Pan事件而不是pinch,并且只能工作一次!之后,当你通过视口移动鼠标时,它会不断调用Pan事件,这非常让人烦恼,使得调试变得不可能。

解决方法: 我所知道的唯一方便的方法是,在移动浏览器上测试手势,要么使用ios/osx设备上的Safari到Safari连接,要么使用android设备上的Chrome到Chrome连接。

我通常使用Chrome DevTools来调试我的JavaScript代码,但在Web-Mobile项目中,我使用Safari Web Inspector,因为我有一个iPhone和一台Mac!你也不能使用桌面版Chrome来调试你的iOS设备。

查看这篇文章,了解如何设置你的Safari Web Inspector。

注意:你需要使用USB电缆将iPhone连接到Mac,并在你的iPhone上启用Web Inspector(设置->Safari->高级->Web Inspector)。如果你无法在Safari中看到开发菜单,请前往首选项,在高级选项卡中勾选“在菜单栏中显示开发菜单”。其余内容在上述文章中有说明。

更新:

在Windows桌面版Safari上无法调试iOS设备。


这很糟糕,因为您可能有一个仅允许本地主机重定向URL而不是常用网络(Wifi)的IP的身份验证提供程序,用于移动设备和PC进行调试。 - Phil
1
@Phil 十分赞同 - Iman Nia

6

针对此问题,另一种测试解决方案是使用Chrome手机模拟器+在0,0点虚拟第二个触摸点:

function handleTouchStart(e) {
    var touches=e.targetTouches;
    touches=
        [
            {
                pageX:touches[0].pageX,
                pageY:touches[0].pageY
            },
            {
                pageX:0,
                pageY:0
            }
    ]; 
    //now use the touches variable as the list of touches.

}

这是一个不错且简单的想法,特别是如果您正在使用自己的库来控制 touch[start|move|end] || pointer[down|move|up] 事件处理程序。此外,伪点也不需要0,0 处,通过一些修改可以轻松设置替代位置。 - Andrew Scott

6
如果您手头有移动设备,您可以将设备连接到桌面计算机并使用远程设备功能在桌面上调试您的手机。
对于Android: 1.启用开发人员模式和USB调试。 2.在桌面上转到DevTools并单击三个点菜单下的More Tools> Remote Devices 3.勾选“发现USB设备”选项。您会在手机上看到授权弹出窗口。允许它并继续。 4.在手机上打开Chrome,您应该能够检查手机上的所有选项卡。作为奖励,您可以使用端口转发将桌面localhost转发到设备的localhost,因此,如果您在桌面上运行开发应用程序,则可以在移动设备上进行调试。
对于iPhone: 我对这里的详细信息不是很熟悉,因为我自己还没有尝试过,但我相信您可以通过chrome://inspect启用它并开始记录。

Source: https://dev.to/dev0x0/using-google-chrome-console-on-any-mobile-device-9ec


5

在 Chrome 66 中,当处于设备模拟模式下时,双击并拖动上/下方向可以放大/缩小。


1
我喜欢这个答案,因为当我的左手忙于托着下巴而无法到达Shift键时,它非常有用。(请注意,它在一些网站上无效,如nytimes.com,这些网站似乎只支持Shift键)。 - personal_cloud

0

这可能不是一个开发者的答案。我一直有网页放大的问题,然后页面就会破裂。许多网页不支持正常缩放。鼠标捏合缩放可以用于普通网页。


虽然这个链接可能回答了问题,但最好在此处包含答案的基本部分并提供参考链接。仅有链接的答案如果链接页面发生更改,则可能变得无效。仅有链接的答案 - Sfili_81

-1

最后一个回答有五个负面评价,但我想说的是,安卓平台上最新的Chrome浏览器(78)没有缩放功能。你可能对视口的理解有些问题。视口的比例是pinchzoom。如果你将其设置为这样,你的网页将无法触发pinchzoom。

<meta name="viewport" content="initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no">

您可以在您的网页中这样设置

<meta name="viewport" content="initial-scale=1, maximum-scale=5, minimum-scale=1, user-scalable=yes">

其他答案已经提到了关于捏合缩放的快捷方式。

-7

在 Mac OS 上,您可以使用触摸板上的两个手指来模拟捏合缩放。

也许可以检查 meta 标签中的视口设置:

<meta name="viewport" content="initial-scale=1">

maximum-scale 添加到视口 meta 标签中可能会影响缩放:

<meta name="viewport" content="initial-scale=1, maximum-scale=1">

这可能会给您带来问题。

您还应该能够使用开发人员工具页面顶部的缩放百分比进行缩放:

Dev tools zoom


1
我不想缩放网站,我想测试移动设备的双指捏合缩放手势。 - Philip Claren

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接