Веб-приложение Javascript, управление iPhone, увеличение масштаба ввода и размытие - PullRequest
2 голосов
/ 08 февраля 2011

Пару лет назад я создал веб-приложение (JS / CSS / HTML поверх бэкэнда LAMP), которое работало нормально.Теперь клиент использует его на своем iPhone и сообщает, что на экране входа в систему с 2 входами окно увеличивает «слишком много», а когда он заканчивает ввод, оно не приближается к «нормальному» уровню масштабирования.(из скриншотов, которые он послал, похоже, что оно возвращается к «нормальному» значению и уровню масштабирования, используемому при вводе во ввод).

Возможно ли управлять любым поведением?Я читал о мета масштабируемой пользователем: 0, но звучит так, как если бы А) вообще не работал или Б) вообще не позволял бы изменять масштаб.

Я бы сказал, что вторая проблема более критична(после того, как пользователь введет текст, он должен вернуться к «нормальному» масштабу).

Я еще раз упомяну, что это стандартное веб-приложение, а не «приложение iPhone» (оно построено на традиционных веб-технологиях)., а не какао или Objective-C).У меня даже нет iPhone или Mac, на котором я могу использовать эмулятор, и эмуляторы Windows, которые я видел, кажутся не чем иным, как iframes в графике.

спасибо

Ответы [ 2 ]

2 голосов
/ 25 февраля 2011

Если вы оставите опцию масштабирования пользователя, он сможет вернуться к исходному масштабу масштабирования сайта. Браузер Iphone Safary в портретном режиме делает увеличение, каждый раз, когда открыта клавиатура или выпадающий список. Затем он не масштабируется до исходного масштаба (это можно сделать, дважды нажав на экран или нажав на экран ...).

Другая опция не позволяет пользователю изменять масштаб с метатегом области просмотра

     <meta name="viewport" id="view" content="user-scalable=no, width=device-width, initial-scale=1.0" />

Тогда iphone не будет изменять масштаб при открытии клавиатуры или при открытии счетчика

В настоящее время я ищу способ ее решения (возможность слияния с предотвращением увеличения при открытии клавиатуры), но я не нашел способа сделать это ...

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

Я решил это, играя с окном просмотра: как вы сказали, когда пользовательский зум не включен, открывающая клавиатура или комбо не делает зум, но тогда вы теряете функцию масштабирования для пользователей.

Я отключаю масштабирование в окне просмотра, когда выбран комбо, а затем восстанавливаю масштабирование через одну секунду:

document.documentElement.addEventListener("touchstart", function (event) {
          if((event.target.nodeName == "SELECT") || (event.target.nodeName == "INPUT") || (event.target.nodeName == "TEXTAREA")) { //it is a combo
                document.getElementById("view").setAttribute('content', 'width=device-width, user-scalable=no');
                setTimeout(function () {
                    document.getElementById("view").setAttribute('content', 'width=device-width, user-scalable=yes');
                }, 1000);
            }
            }, true);

Не сказать, что в моем окне просмотра есть "view" как идентификатор.

Да, я знаю, что это не лучшее решение, но оно работает ...

...