23474


お世話になります。タイトルで書いたことをやりたいのですがエラーが発生します。  
最初から順に書きますので漏れなどあればご教示ください。

Monacaを使用しています。

1.新規プロジェクトから「Onsen UI最小限のテンプレート(ユニバーサルアプリ対応版)」を選択  
2.「ファイル」-「Cordavaプラグインの管理」から「Cordovaプラグインのインポート」をクリック  
3.「ZIP形式のプラグイン」を選んで、[配布元](https://github.com/ch000/cordova-
imagePicker)から落としたZipをインポート  
インポート結果が下記画像になります。  
[![画像の説明をここに入力](https://i.stack.imgur.com/BhERD.png)](https://i.stack.imgur.com/BhERD.png)

4.index.htmlのscript内を下記に変更

[code]

        <script>
        ons.bootstrap();
        if(typeof device === 'undefined'){
            document.addEventListener("deviceready", onDeviceReady, false);
        }else{
            onDeviceReady();
        }
    
        function onDeviceReady() {
        try{
            window.imagePicker.getPictures(
                function(results) {
                    for (var i = 0; i < results.length; i++) {
                        console.log('Image URI: ' + results[i]);
                    }
                }, function (error) {
                    console.log('Error: ' + error);
                }
            );
        } catch(e){
            alert(e);
    
        }
        }
    </script>
    
[/code]

IOS9.3でMonacaデバッガーから起動すると下記エラーが発生  
「TypeError: Cannot read property 'getPictures' of undefined」  
カメラプラグインを有効にすると  
「TypeError: undefined is not an object (evaluating
'window.imagePicker.getPictures')」となります。

追記：  
DeviceプラグインとinAppBrowserプラグインも追加しております。


CC BY-SA 3.0
2016-03-25T08:06:51.877
23448
2016-03-27T02:31:55.363
2016-03-27T02:31:55.363
13177
13177
question
monaca cordova
cordova-imagePickerで画像を表示・選択する方法


冒頭のif文でdevicereadyが発火済みかどうかチェックしているのだと推測しますが、window.deviceが存在することはdevicereadyが完了していることを保証しません。したがってdevicereadyイベントの発火前にonDeviceReady()関数が呼ばれたためにエラーになっているのでしょう。  
また、

[code]

    document.addEventListener("deviceready", onDeviceReady, false);
    
[/code]

で登録された関数はdevicereadyが既に発火済みの場合は即時実行されますので

[code]

    if(typeof device === 'undefined'){
        document.addEventListener("deviceready", onDeviceReady, false);
    }else{
        onDeviceReady();
    }
    
[/code]

この部分は

[code]

    document.addEventListener("deviceready", onDeviceReady, false);
    
[/code]

これで十分です。


CC BY-SA 3.0
2016-03-26T05:40:17.167
23474
2016-03-26T05:40:17.167
8532
23448
answer