Я пытаюсь создать приложение, используя кордову, но вместо того, чтобы размещать веб-приложение локально, я буду размещать его на сервере.
Так что эта часть хорошо работает с белым списком и разрешенной навигацией.
Проблема возникает, когда я пытаюсь использовать камеру. Похоже, что требуется некоторое время, прежде чем камера будет доступна через навигатор.
Так что это мое простое веб-приложение, чтобы понять, как оно работает.
<!DOCTYPE html>
<head>
<title>test</title>
<script src="scripts/cordova.js"></script>
</head>
<body>
<script>
(function() {
// camera will be undefined
var camera = navigator.camera;
})();
</script>
</body>
</html>
Но когда я ставлю все в setTimeout, он доступен.
<!DOCTYPE html>
<head>
<title>test</title>
<script src="scripts/cordova.js"></script>
</head>
<body>
<script>
(function() {
setTimeout(function() {
// I can now use it.
var camera = navigator.camera;
}, 10000);
})();
</script>
</body>
</html>
И это мой файл index.js, который будет перенаправляться на веб-приложение, размещенное на нашем сервере. Поэтому он ждет готовности устройства перед перенаправлением.
var app = {
// Application Constructor
initialize: function() {
document.addEventListener('deviceready', this.onDeviceReady.bind(this), false);
},
// deviceready Event Handler
//
// Bind any cordova events here. Common events are:
// 'pause', 'resume', etc.
onDeviceReady: function() {
this.receivedEvent('deviceready');
window.location.replace("http://10.0.0.36:8080/");
},
// Update DOM on a Received Event
receivedEvent: function(id) {
var parentElement = document.getElementById(id);
var listeningElement = parentElement.querySelector('.listening');
var receivedElement = parentElement.querySelector('.received');
listeningElement.setAttribute('style', 'display:none;');
receivedElement.setAttribute('style', 'display:block;');
console.log('Received Event: ' + id);
}
};
app.initialize();
Я пытаюсь понять, почему?
Спасибо,
Вам нужно подождать, пока устройство будет готово, прежде чем вы будете вызывать любые плагины.
document.addEventListener("deviceready", function(){
var camera = navigator.camera;
})