2012-02-10 11 views
0

私の問題は、index.htmlにないプラグインの関数を呼び出すとエラーが発生することです。phonegapプラグインを処理する方法

02-10 16:48:31.606: D/PhoneGapLog(24149): Uncaught TypeError: Cannot call method 'toDataURL' of undefined 

私はキャンバスのプラグインを使用したい、私がこの呼び出しを変更する必要がどのように... index.htmlの中ではなく、他のページで働いています:

window.plugins.canvas.toDataURL(canvas, "image/png", success, failure); 

も同じ問題を抱えています関連するページにそれらを実装する方法?

<body> 
    <div data-role="page" id="some_id">  

    <style type="text/css"> 
     #img { 
      position:absolute; 
      top:20px; 
      left:20px; 
      width: 400px; 
      height: 400px; 
      border: 1px solid; 
      border-color: #458d91; 
      -moz-border-radius:16px; 
      -khtml-border-radius:16px; 
      font-family: Verdana, Arial, Helvetica, sans-serif; 
      font-size: 10px; 
      padding-top: 10px; 
      padding-left:10px; 
      padding-right:10px; 
      padding-bottom: 10px; 
     } 
     </style> 

    <script type="text/javascript" charset="utf-8" src="phonegap-1.4.1.js"></script> 
    <script type="text/javascript" charset="utf-8" src="jquery.min.js"></script> 
    <script type="text/javascript" charset="utf-8" src="canvas.js"></script> 
    <script type="text/javascript" charset="utf-8" src="jquery.mobile-1.0.min.js"></script> 

    <script type="text/javascript"> 

    try { 
     var canSave = false; 
     var b_canvas; 
     function init() { 

      document.addEventListener('deviceready', function() { 
       canSave = true; 
      }); 

      b_canvas = document.getElementById('cid'); 
      var b_context = b_canvas.getContext('2d'); 
      b_context.fillRect(50, 25, 150, 100); 
     } 
     function saveImg() { 

      if (canSave) { 

       window.plugins.canvas.toDataURL(b_canvas, "image/png", success, failure); 
       function success(arg) { 

        if (arg.size > 0) { 
         var oImgElement = document.createElement("img"); 
         oImgElement.src = arg.data; 
         document.getElementById('img').appendChild(oImgElement); 
        } else {    
         alert("Canvas Write Error: " + arg.debug); 
        } 
       } 
       function failure(arg) { 
        alert("failure: " + arg); 
       } 
      } 
     } 
    } catch(err) { alert(err); } 

    </script> 

    <br/><br/> 
    <a href="#" onclick="init();">init</a> 
    <br><br> 
    <a href="#" onclick="saveImg();">SAVE</a> 
    <div id="img" style="float: left; border: 1px dotted;"></div> 
    <br clear="both"/> 
    <div style="margin-top: 130px; float: right;"> 
     <canvas id="cid" width="300" height="225"></canvas> 
    </div> 


</div> 
</body> 

答えて

1

あなたは上のプラグインを使用する各ページのプラグインJavaScriptとphonegap.jsをロードする必要があります。

コード

よろしく。

+0

こんにちは、私はそれを考えていました... init()は可能ですが、保存できません。エラーのあるプラグインの機能で停止し、最初の投稿に投稿されています。 ..それは私がjquery-mobileのデータロールにコードをどのように置くかの方法かもしれません... mhhhはbody-onloadのためにより良い解決策を探しています...に関して – mboeckle

+0

解決済み - jsを追加するのを忘れましたインデックスだけでなく、私はプラグインを呼び出しているサイトで思った... – mboeckle

関連する問題