console.logが出力されないことがある
MonacaクラウドでiPhone向けのアプリを試作中です。
以下のコードをiPhoneのmonacaデバッガで実行しても、success、errorいずれもApp Logに表示されません。alertのコメントを外してalertを出すとApp Logも表示されます。
以前からApp Logに出るべきものが出ておらずコードの追跡が困難なことがあり、不安定なのかと思っていましたが、今回はっきり再現するパターンが作れたと思います。
私の無知大ボケなのかもしれず戦々恐々なのですが、困っておりお叱りも覚悟の上質問いたします。
何かおわかりになりましたら、宜しくお願いいたします。
iPhone5/iOS8.1.3、Monaca Debugger4.0.0、Cordova 4.1.0 Platform 3.7.0
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<script src="components/loader.js"></script>
<link rel="stylesheet" href="components/loader.css">
<link rel="stylesheet" href="css/style.css">
<!-- user -->
<script>
"use strict";
document.addEventListener('DOMContentLoaded', function(){
document.addEventListener('deviceready', onDeviceReady);
});
function onDeviceReady(){
console.log('start');
navigator.device.capture.captureVideo(function(mediaFiles){
//alert('success');
console.log('success');
}, function(){
//alert('error');
console.log('error');
}, {limit: 1, duration: 120});
}
</script>
<!-- user -->
</head>
<body>
</body>
</html>
2015/05/01 9時追記
試したところ以下のコードではsuccess、error共に2、3は実行され、1は出ませんでした。
function onDeviceReady(){
console.log('start');
navigator.device.capture.captureVideo(function(mediaFiles){
console.log('success');
alert('success2');
console.log('success3');
}, function(){
console.log('error');
alert('error2');
console.log('error3');
}, {limit: 1, duration: 120});
}
2015/05/01 10時追記
他のコールバックではどうかと思いsetTimeoutを試しましたが問題ありませんでした。
しかし、以下のコードのようにsetTimeoutとcaptureVideoを同時に実装した時、Timeoutが発生した時にVideoが終了していた場合はlogにtimeout1,3が出力されましたが、Video実行中の時は出力されませんでした。
このことからcaptureVideo実行中あるいはその直後はconsole.logが出力されないということかな、と想像します。
仕様か不具合かミスか不明で、実際困るので何かおわかりになりましたら是非お教え下さい。
cameraでも同様でした。タグにcordovaを追記させて頂きます。
function onDeviceReady(){
console.log('start');
setTimeout(function(){
console.log('timeout1');
alert('timeout2');
console.log('timeout3');
}, 1000);
navigator.device.capture.captureVideo(function(mediaFiles){
console.log('success1');
alert('success2');
console.log('success3');
}, function(){
console.log('error1');
alert('error2');
console.log('error3');
}, {limit: 1, duration: 120});
}
2015/05/01 12時追記
cordova-plugin-consoleなるプラグインがあることを知りました。試してみたいのですが
monacaをGOLDプランにしないとcordovaプラグインの追加ができないようで、現状試せません。