启用Chrome应用程序中的捏合缩放功能

3

我目前正在开发一个打包的Chrome应用,其中包含了Google地图。然而,我无法使用捏合手势进行缩放。此外,在网页上的“普通”缩放也无法实现。

如果我直接在Google Chrome中打开所有页面(和地图),它们都可以使用捏合手势进行缩放,但在打包的应用程序中似乎无法实现。有什么想法吗?这可能是权限或WindowOptions问题吗?

系统:Mac 10.11.3. Chrome版本:48.0.2564.116

简单示例(Dropbox链接):zoomtest

manifest.json

{
    "name": "Zoom test",
    "version": "0.1",
    "manifest_version": 2,
    "app": {
        "background": {
            "scripts": ["background.js"]
        }
    }
}

background.js

chrome.app.runtime.onLaunched.addListener(function() {
    chrome.app.window.create('index.html', {
        innerBounds: { width: 800, height: 600 },
        state: 'normal'
    });
});

index.html

<html>
<head>
<style>
p {
    width: 400px;
}
</style>
</head>
<body>
<p>This page is zoomable in Google Chrome if opened directly,
but not if run as an app.</p>

</body>
</html>

我也有非地图页面。在Chrome中直接打开它们时,我可以用手指捏合缩放HTML页面。但在Chrome应用程序中,我无法这样做。我是否错过了某些设置? - sy1vain
也许吧。不过,还是展示一个最小的例子。 - Xan
请点击以下链接下载与程序相关的内容:link我将尝试在此处发布代码。 - sy1vain
好的,如果不运行,那就根本行不通。这与缩放无关 - 它根本就不会工作。 - Xan
现在有了一个清晰的最小示例,我可以点赞这个问题;不幸的是,我对此没有答案。 - Xan
显示剩余3条评论
1个回答

1
我用以下函数修复了它:
function mapTouchFix(){
  if("ontouchstart" in window || window.DocumentTouch && document instanceof DocumentTouch){
    navigator = navigator || {};
    if(navigator.platform!='MacIntel'){
      navigator.msMaxTouchPoints = navigator.msMaxTouchPoints || 2;
    }
  }
}

显然,这个恶搞使用了Chrome / Google Maps的伪装来启用捏合手势。

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