Есть ли Android встроенный браузер руководство разработчика? Где искать различия в движке JS?

по мере того, как я все больше и больше в разработке приложений 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 ответов


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

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

Как я думаю, было упомянуто ранее,этой теме имеет кучу предлагаемых обходных путей для конкретной проблемы, о которой Вы упомянули.

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

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

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


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


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

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

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