Фон
Я пытаюсь обновить приложение iOS, основанное на Cordova 2.0 до версии 2.7.
В основном это приветственный экран, который указывает на удаленную поисковую систему (пожалуйста, воздержитесь от комментариев о действительности приложения и вероятном одобрении, поскольку мы прошли мимо этого), и мы использовали ChildBrowser, чтобы разрешить открытие ссылок в дополнительном браузере, чтобы не улавливать пользователя в веб-просмотре Cordova.
Кордова 2.7 имеет функцию под названием InAppBrowser Я надеюсь использовать вместо ChildBrowser. InAppBrowser делает практически то же самое, кроме пропущенной кнопки для открытия в Safari.
Проблема
Существующие удаленные веб-страницы приложений включают в себя Cordova JS (а также плагин ChildBrowser), и он отлично работает для открытия ссылок в под-браузере.
Мой тест Приложение Cordova 2.7, похоже, не правильно загружает Кордову JS, когда оно загружается с удаленной веб-страницы.
Я попытался использовать этот точный HTML-код на встроенной стартовой странице и удаленной стартовой странице:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script type="text/javascript" src="http://mydomain.com/mobile/cordova-2.7.0.js"></script>
</head>
<body>
<script>
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
alert("Ready!!");
}
</script>
</body>
</html>
Чтобы проверить это как встроенную стартовую страницу, я помещаю эту строку в config.xml
:
<content src="index.html" />
Когда я запускаю приложение, я быстро получаю "Готов!". предупреждение.
Чтобы проверить это как удаленную стартовую страницу (я нацелен на ссылку на удаленную страницу в конечном приложении, я просто использую ее как стартовую страницу для тестирования. то же самое, если я ссылаюсь со встроенной страницы.), я поместил эту строку в config.xml
:
<content src="http://mydomain.com/mobile/index.php" />
Когда я запускаю приложение, я просто получаю пустой экран и не предупреждаю.
Далее, в cordova-2.7.0.js
L. 6255, я изменил
console.log('deviceready has not fired after 5 seconds.');
к
alert('deviceready has not fired after 5 seconds.');
С этим изменением запуск приложения с помощью стартовой страницы пуста приводит к пустой странице, а затем через пять секунд я получаю предупреждение: "deviceready не запускается через 5 секунд". Так что это говорит мне, что Кордова JS не работает правильно. Излишне говорить, что я не могу заставить InAppBrowser запускать ссылки в дополнительном браузере на удаленном сайте, но я могу заставить его работать отлично на встроенной стартовой странице.
У кого-нибудь есть идеи, куда идти дальше? Это довольно простой пример, поэтому я предполагаю, что это проблема настроек Кордовы или изменение функциональности. Я ценю любые мысли, спасибо!