Почему google.com выглядит по-разному на blackberry & phonegap и blackberry & browser

Я стараюсь, чтобы телефонная щель заработала на Blackberry Storm (симулятор 9530). Я тестировал свое веб-приложение, не используя встроенный в BB браузер, и оно выглядело нормально, но потом оно полностью изменилось, когда я попытался посмотреть на какой-то код из phonegap, хотя я указывал на phonegap тот же URL-адрес (у меня не было еще не дошел до точки запуска кода локально на устройстве).

Я попробовал контрольный пример в Google и получил аналогичные результаты. увидеть ниже. Я подозреваю, что мне здесь чего-то не хватает. Я бы ожидал, что оба изображения будут почти идентичны.

Браузер http://www.eleganttechnologies.com/outside/ImgDeviceBB9530WebGoogle.jpg

Phonegap http://www.eleganttechnologies.com/outside/ImgDeviceBB9530PgGoogle.jpg

[Обновление] Чтобы пролить свет на происходящее, я настроил браузер и встроенный браузер (пробел в телефоне) на тест W3 для мобильных веб-приложений: http://www.w3.org/2008/06/mobile-test/ I определенно замечаю различия между ними, но я пока не знаю, "почему" и "как обратиться".

Кислота через встроенный браузер http://www.eleganttechnologies.com/outside/ImgDeviceBb9530WebAcid.jpg Кстати, я запустил это раньше сегодня и получил на пару больше зеленых квадратов, чем сейчас.

Кислота через браузер, встроенный в телефонную пробку http://www.eleganttechnologies.com/outside/ImgDeviceBb9530PgAcid.jpg

5 ответов

Решение

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

На конференции разработчиков BlackBerry в прошлом году был рассказан об этом, и есть недокументированная возможность использовать более новый механизм рендеринга. \

Идентификатор опции - 17000 (да, магическое число, которое можно изменить, использовать на свой страх и риск и т. Д.), И для него должно быть установлено значение true. Не уверен, как вы передадите эту опцию через пробел в телефоне (я не знаком с инструментарием), но с помощью API BlackBerry это выглядит примерно так:

BrowserContent content;
...
content.getRenderingOptions().setProperty(RenderingOptions.CORE_OPTIONS_GUID, 17000, true);

Я не знаю специфики браузеров, которые вы используете, но я знаю, что большинство крупных сайтов обнаружат вашу комбинацию ОС + браузер, чтобы решить, какой HTML вам показывать.

Если Google видит другого агента пользователя, вы можете получить общую мобильную версию HTML вместо специального HTML-кода Blackberry, который вы получаете для встроенного браузера.

Если у вас есть доступ к веб-серверу, попробуйте подключиться к нему с обоими настройками браузера и посмотрите, есть ли какая-либо разница в файле журнала. Это может рассказать вам кое-что интересное.

Как мы можем видеть в ваших кислотных тестах...

Один браузер (встроенный) правильно сообщает о BlackBerry9530, а другой (пробел) не представляет пользовательский агент ["Тестирование с помощью."]. В этом случае Google предоставляет вам вид по умолчанию своей домашней страницы, тогда как, когда вы сообщаете о себе как о устройстве BlackBerry, вы получаете специфичный для BlackBerry рендеринг.

Судя по всему, использование phonegap удаляет агента пользователя по умолчанию (скорее всего, потому что он не распознает ваше устройство). Поскольку PhoneGap является открытым исходным кодом, лучше всего войти туда, отладить его и выяснить, что происходит с пользовательским агентом, когда http-запросы покидают устройство, и отследить его оттуда.

Может быть, у одного браузера есть возможности, которых нет у другого?

Гектометр Глядя на скриншот, я бы сказал, что на второй странице, вероятно, отсутствуют некоторые ресурсы. Возможно, отсутствуют некоторые изображения, скрипты и CSS-файлы, что объясняет разные l&f. Зная, как работает Blackberry Browser Field API, я могу предположить, что реализация, использующая BrowserField, была выполнена неправильно. Просто мое предположение. В дополнение к этому, когда поле браузера инициализируется, вызывающий должен настроить его должным образом, включив соответствующие функции браузера - скрипты, стили и т. Д. Опять же, API сделан очень странным образом, я попал в эту ловушку однажды, При настройке параметров вы не можете просто создать одну маску (например, CSS | WML | SCRIPT) и сделать один вызов. Параметры являются числовыми и, я полагаю, не перекрываются, но вам все равно нужно вызвать API для настройки каждого параметра независимо.

Кроме того, способ асинхронной загрузки ресурсов для BrowserField требует времени, чтобы понять.

Просто мои 0,02 доллара.

Другие вопросы по тегам