2012-01-23 37 views
1

我有一个电话差距应用程序,可以启用/禁用动态缩放。该应用程序允许在具有详细图表的页面上缩放,而对于应用程序的其余部分禁用缩放。 启用:Phonegap Zoom Level

<meta id="viewport" name="viewport" 
     content="initial-scale=1.0, maximum-scale=3.0, minimum-scale=1.0, user-scalable=yes" /> 

禁用:

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

我的问题是,它是可能的,用户可放大,然后去

变焦时使用Meta视标签改变禁用缩放的页面。在这里他们将被锁定在放大的水平。

我发现如何发现问题就在这里:

Safari iPhone - How to detect zoom level and offset?

但是,有没有办法编程,最好在JavaScript中(保持不定制工作的PhoneGap的应用程序跨平台),设置缩放级别? (目前我正在刷新文档,这很有效,但它可能是处理它的最慢的方法)

回答

1

关于Android,您可以通过编程方式从本地代码(Java)直接访问WebView对象更改缩放比例。

如:

appView = (WebView) findViewById(R.id.appView); 
appView.setInitialScale((int)globalScale); 
appView.getSettings().setSupportZoom(true); 
appView.getSettings().setDefaultZoom(WebSettings.ZoomDensity.FAR); 
appView.getSettings().setUseWideViewPort(true); 
... 

如果需要触发从JavaScript我可以建议编写自己的PhoneGap插件变焦修改(这不是太硬),其结合javascript代码到本机代码直接访问到的WebView目的。

请记住,我认为您应该避免为HTML的元标记指定额外的属性,否则它们可以覆盖WebView设置。把刚才

<meta name="viewport" content="target-densitydpi=device-dpi"> 
+0

谢谢发布,但我正在寻找一种方法来控制放大javascript,以便我不必重做代码/项目的Android和IOS。 – leech

+0

这不是我正在寻找的东西(它当然不能用于IOS),但它确实解决了Android中的问题。在android中,你必须做一个定制的生成。 – leech

+0

webview.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);全屏幕 – letroll