Windows phone 8 Окно просмотра HTML5 выше экрана после обновления до 8.0.10328.78

Я разрабатываю существующее приложение Кордовы, которое я хочу подключить к окну телефона 8. После применения нескольких исправлений для градиентов и проблемы в представлении окна все, казалось, сработало. Вчера я обновил свой телефон (Lumia 520) до более новой версии (8.0.10328.78), и внезапно фиксированный нижний колонтитул частично выходит за пределы видимой области экрана.

Я уменьшил код настолько, насколько мог, и применил все варианты исправлений ширины устройства/высоты устройства, которые я мог найти.

Самый простой случай появляется даже в приложении примера HTML5, если только

<div style="position: fixed; bottom:0; left:0; right:0; background-color: red; height:30px;">footer</div>

добавляется к нему. Вы можете видеть только 10 лучших пикселей, если вы не прокрутите вниз. Кроме того, он не похож на нижний колонтитул, который не фиксирован, потому что, если вы создаете очень длинную страницу (длина нескольких экранов), нижний колонтитул будет находиться в том же месте (примерно 20 пикселей вне поля зрения, пока вы полностью не прокрутите до конца) Если вы полностью прокрутите список, верхние 20 пикселей заголовка будут скрыты.

Пример приложения уже имеет

@-ms-viewport{ width: 320px; }

в нем по умолчанию. Но на самом деле проблема, которую я вижу сейчас, отличается от той, которая была исправлена, добавив это. (в старом случае вы увидите, что нижний колонтитул плавает около 20 пикселей над дном, но даже когда раздел ms-viewport удален, этого больше не происходит.)

Кроме того, я сделал несколько измерений:

window.screen.height => 800
window.innerHeight => 512
window.outerHeight => 512
$(window).height() => 533

Ответ 1

У меня была эта проблема в приложении Cordova/PhoneGap. Я даже вижу проблему в Windows Phone 8 приложениях HTML5, когда я не пользуюсь PhoneGap (просто создайте новый проект в Visual Studio 2012 из "Шаблоны → Visual С# → Приложение Windows Phone HTML5" ). Эта проблема не появляется, если вы загружаете один и тот же код HTML5 с размещенного сайта с помощью приложения IE на Windows Phone 8.

Единственное, что я нашел, чтобы заставить окно просмотра правильно работать, - это скрыть системный трей.

В изменении MainPage.xaml

shell:SystemTray.IsVisible="True"

к

shell:SystemTray.IsVisible="False"

Это скрывает системный трей и делает ваше приложение полноэкранным.

По какой-то причине, когда приложение полноэкранное, окно просмотра ведет себя так, как ожидалось.

Ответ 2

старый вопрос, но, начиная с января 2015 года, и насколько я знаю для Lumia 520 + wp8.1,

<preference name="fullscreen" value="true"/>

в config.xml делает трюк, оставляя системный лоток вместо него. Вы можете поместить его в спецификацию платформы

<platform name="wp8">
    <preference name="fullscreen" value="true"/>
</platform>