2012-08-07 8 views
2

cordova2.0.0에서 코드를 사용하여 Java 스크립트에서 원시 함수 (c로 작성)를 호출하는 응용 프로그램을 만들었습니다. 내가 코르도바 2.0.0로 업데이트 할 때하는 응용 프로그램이cordova 2.0.0은 Uncaught TypeError를 제공합니다. Object 0에는 'func'메서드가 없습니다

이전

내가 폰갭 1.0.0로하고 있던를 properly.but 노력하고, 내가

08-07 15:24:12.527: I/Web Console(855): JSCallback Error: Request failed. at file:///android_asset/www/cordova-2.0.0.js:3698 
08-07 15:22:27.815: E/Web Console(855): Uncaught TypeError: Object 0 has no method 'func' at file:///android_asset/www/file.js:359 

어느 한 저를 도와주세요 수있는 오류를 얻고있다 이 문제에서 내 .html 파일의

코드 : find.js에서

<!DOCTYPE html> 
<head> 
    <script type="text/javascript" charset="utf-8" src="cordova2.0.0.js"></script> 
    <script type="text/javascript" charset="utf-8" src="find.js"></script> 
    <script type="text/javascript"> 

     function js_find(fthisval){ 

     ws_find(socket,js_found);   

     } 
     function js_found(retval){  

     alert(retval);   

     } 
     function onBodyLoad(){   

      document.addEventListener("deviceready",onDeviceReady,false); 

     } 

     function onDeviceReady() 
     { 

      document.getElementById('d1').style.visibility = "visible"; 

     } 
    </script>  
</head> 
<body onload="onBodyLoad()"> 
<div id="d1" style="visibility:hidden"> 
    <button id="b1" onclick="js_find("ram")">Find it plz</button><br /> 
    </div> 
</body> 

:

var Find = function() {}; 

Find.prototype.func = function(funcname,funcdata) { 

return cordova.exec(
    null,     
    null,     
    'findPlugin',  
    funcname,    
    funcdata);    
}; 
window.find = new Find(); 

function ws_find(name, param, callback){ 

    if(undefined == callback){ 

      var dataArray = [param, param, name]; 

    } 
    else{ 

     var dataArray = [callback, callback, name, param]; 

    } 

    alert("Calling plugin function find with \r\n"+dataArray);  
    return window.find.func("find",dataArray);  

} 

라인 return window.find.func("find",dataArray); 네이티브 자바 함수를 호출 할 suppossed했지만, 그것은주고있다 나 위의 오류.

답변

0

작품 미세 나

아이스크림 샌드위치와 진저 브레드에서 테스트

어디까지 볼 경고와 버전을 디버깅 시도 (당신에 대한 구조 조정 스위치를 제거하고 당신이 좋아하는 중 옵션을 갖는 필요할 수 있음)에 대한 그것은 간다.

cordova.exec에서 반환해야합니까?

<!DOCTYPE HTML> 
<html> 
<head> 
<title>Cordova</title> 
<script type="text/javascript" charset="utf-8" src="cordova-2.0.0.js"></script> 
<script type="text/javascript" charset="utf-8"> 

function callPlugin(type){ 

    switch(type){ 

     case 1: 

       //Func Ptr 
       window.echo = function(str, callback) { 

           cordova.exec(callback, function(err) { callback('Nothing to echo.'); }, "Echo", "echo", [str]); 

          };  

       //Func Call   
       window.echo("echome", function(echoValue){alert(echoValue);}); 
       break; 

     case 2: 

       var MyClass = function(){};    //Prototype 

       MyClass.prototype.echo = function(str, callback) { 

               cordova.exec(callback, function(err) { callback('Nothing to echo.'); }, "Echo", "echo", [str]); 

             }; 


       window.echo = new MyClass();              
       window.echo.echo("echome2", function(echoValue){alert(echoValue);}); 

       //OR 
       //window.echo = new MyClass().echo;           //Add Function to Window Object 
       //window.echo("echome1", function(echoValue){alert(echoValue);});   //Call Plugin 

       break; 
    } 
} 

</script> 
</head> 
<body> 
<h1>Plugin Test</h1> 
<button onclick="callPlugin(1)">Call Plugin by Cordova 2.0.0 Method</button><br /> 
<button onclick="callPlugin(2)">Call Plugin by Cordova 1.0.0 Method</button><br /> 
</body> 
</html> 
관련 문제