PhoneGap Zoom Level - PullRequest
       7

PhoneGap Zoom Level

1 голос
/ 24 января 2012

У меня есть приложение для определения разрыва телефона, которое динамически включает / отключает масштабирование. Приложение позволяет масштабировать страницы с подробными диаграммами, а для остальных приложений отключает масштабирование.

Масштабирование изменяется с помощью тега Meta viewport: Включено:

 <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" />

Моя проблема в том, что пользователь может увеличить масштаб, а затем перейти на страницу с отключенным масштабированием. Здесь они будут заблокированы на увеличенном уровне.

Я нашел способ обнаружения проблемы здесь:

Safari iPhone - Как определить уровень масштабирования и смещение?

Но есть ли способ программно и желательно в JavaScript (чтобы кроссплатформенность приложения phonegap без специальной работы) установить уровень масштабирования? (в настоящее время я обновляю документ, который работает, но это, вероятно, самый медленный способ справиться с этим)

1 Ответ

1 голос
/ 27 января 2012

Что касается 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"> 
...