Cordova Firefoxos проблема веб-доступа
Я пытаюсь перенести мое корректно работающее (в iOS, Android) приложение Cordova на Firefoxos.
Симулятор запускается правильно, и его браузер может загружать веб-страницы, НО мое приложение не может загружать данные из Интернета.
Глядя на консоль, я вижу следующие ошибки:
"JavaScript error: app://aa2a2c24-a8d6-447d-92da-4f2e9af65661/plugins/org.apache.cordova.network-information/src/firefoxos/NetworkProxy.js, line 33: missing : after property id" simulator-process.js:44
"JavaScript error: app://aa2a2c24-a8d6-447d-92da-4f2e9af65661/cordova.js, line 1120: Module org.apache.cordova.network-information.NetworkProxy does not exist."
Любое предложение? Благодарю.
Кордова 3.5.0
Симулятор FirfeoxOS 1.3 и FirfeoxOS 1.4
1 ответ
После некоторого исследования я выяснил проблемы
1- Несмотря на обновление Cordova до 3.5.0, я должен помнить, что плагины не обновляются автоматически.
Чтобы обновить код плагина для Firefoxos, я снова добавил тот же плагин, удалил платформу Firefoxos и заново установил его. В этот момент ошибки JavaScript исчезли
2- Тогда вызов ajax все еще не был доступен из-за разрешений. Чтобы убедиться, что у вас есть вызов ajax, вы должны поместить в свой manifest.webapp следующий код
"type": "privileged",
"permissions": {
"systemXHR": { "description": "Required for AJAX calls in app"}
}
Требуются оба типа и разрешения
3- Наконец, вы должны убедиться, что использование вызовов ajax
mozSystem: true
Специально для jquery, вы можете поместить что-то вроде следующего поверх вашего файла js:
if (device.platform == 'firefoxos') {
$.ajaxPrefilter( function( options ) {
if ( options.firefoxOS ) {
options.xhr = function() {
return new window.XMLHttpRequest( {
mozSystem: true
} );
}
}
} );
$.ajaxSetup( {
firefoxOS: true
} );
}
Теперь я могу правильно обрабатывать вызовы ajax.