Существует ли руководство для разработчиков встроенного браузера Android?Где искать отличия двигателя JS? - PullRequest
7 голосов
/ 10 июня 2011

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

Это очень расстраивает, потому что вы должны тестировать все на всех версиях эмулятора Android, и если приложение становится большим, это МНОГО работы, чтобы протестировать все функции во всех версиях.

Все взволнованы HTML5, я тоже, но только до того момента, когда я перешел к реальным вещам.Я понял, что при работе с разными версиями Android очень много проблем, которые иногда ведут себя по-разному.

Если у кого-то есть хороший ресурс, которым я могу поделиться, я был бы очень рад.Спасибо

РЕДАКТИРОВАТЬ : добавлен пример различного поведения между версиями браузера Android (но их много):

Это работает в браузере Android в 1.6, 2.2, 2.3и 2.3.3.Но это не удается (приложение падает или останавливает выполнение JS) в Android 2.1:

Object.keys(var).length 

Ответы [ 3 ]

2 голосов
/ 27 июня 2011

Вы задали довольно общий вопрос.Ответ общего назначения заключается в том, что любой вид кросс-браузерной разработки (даже кросс-версий одного и того же браузера) требует от вас знакомства с тем, какие функции безопасны для целевых браузеров, какие функции небезопасны для целевых браузеров и какие должныиспользовать только при тщательном тестировании или обнаружении функций с запасным вариантом.

Хотя нельзя точно ожидать, что вы увидите разницу с одним примером, на который вы ссылались, ясно, что это довольно новая функция в ECMAScript, и она не всегда реализована в обычных браузерах, поэтому я бы добавилон относится к категории, в которой небезопасно предполагать, что он работает на всех версиях Android, даже если вы видели его в некоторых версиях Android.Для меня это означает, что вы должны использовать его только в том случае, если вы явно проверили его надежность во всех версиях браузера, на которые вы нацеливаетесь, или разработали функциональный тест, и используйте его только тогда, когда вы знаете, что он присутствует и надежен, или разработали более безопасный обходной путь..

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

Я не знаю ни о какихподробный письменный материал, который заранее документирует для вас детали различий между различными версиями браузера Android.Так как это открытый исходный код, вероятно, есть заметки о проверке разработчиков и некоторый уровень заметок о выпуске, но это, вероятно, будет похоже на поиск иголки в стоге сена и может даже не содержать того, что вы хотите.Разработчики редко предоставляют такую ​​подробную информацию.Обычно мы не получаем такого уровня детализации ни от одного из существующих браузеров для настольных компьютеров или iOS-браузеров, и, даже если бы вы были в самой команде разработчиков, вы, вероятно, увидели бы только часть этой информации.Я не думаю, что вы найдете официальную документацию, которая охватывает то, что вы хотите.

Вам придется научиться лечить как нечто большее из неизвестного и узнать, какие области являются «безопасными», какие области требуют тщательного тестирования перед использованием и какие области просто слишком рискованны.Даже в этом случае вы найдете ошибки Android в какой-то версии, которая вас обескураживает.Это просто характер строительства на чужой платформе.По крайней мере, набор браузеров для Android гораздо проще, чем пытаться настроить таргетинг на все настольные браузеры от IE6 до IE9, Firefox от 3 до 5, Safari от 3 до 5, от Opera 9 до 11, Chrome от 9 до 12, все Android, все iOS ипри наличии используйте HTML5, над чем я и работаю.

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

0 голосов
/ 10 июня 2011

Основная идея кросс-браузерного Javascript - это тестирование встроенных функций (по крайней мере, как я его принял). Я не знаю точно, какие «функции» вы конкретно ищете, но обычно целесообразно тестировать для Существование набора функций, затем использовать его и иметь запасной вариант, если он не существует. (Даже если запасной вариант: «Для этого сайта требуется браузер, поддерживающий« foo »»)

Поскольку вы не привели никаких примеров, я выберу Ajax. Всегда лучше проверить наличие window.XMLHttpRequest, а затем действовать по нему. Конечно, это неэффективно, если вы делаете это для каждого случая необходимости, поэтому вы можете написать процедуру проверки или оболочку, чтобы принять ваш список необходимости, и позволить вашей оболочке кэшировать / вызывать соответствующие методы для выполнения этой задачи.

Без примеров «функций», о которых вы говорите, отличается от браузера к браузеру, однако, трудно дать какой-либо конкретный совет относительно направления.

0 голосов
/ 10 июня 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...