2

为了将画布图像保存到画廊,我尝试通过在 phonegap 中创建插件以及下面的一段 javascript 代码,但是在单击按钮后,我得到了“Uncaught TypeError: Cannot read property 'version' of undefined at file:///android_asset/www/index.html:18" 代码

<script type="text/javascript" charset="utf-8" src="cordova.js"></script>
<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>    
<script type="text/javascript" charset="utf-8" src="SavePhotoPlugin.js"></script>
<link rel="stylesheet" href="index.css" /> 
<script type="text/javascript"> 
document.addEventListener("deviceready", onDeviceReady, false);

 function onDeviceReady() {
        var element = document.getElementById('myCanvas');

    }
    function share() {      

        var canvas = document.getElementById("myCanvas");
        window.savephotoplugin(canvas,"image/png",device.version,function(val){ 
          //returns you the saved path in val   
                alert("Photo Saved: " + val);   
        });
    }
</script>
    </head>
     <body>

       <div >

     <IMG SRC="loadin.png" ALT="some text" WIDTH=100 HEIGHT=100>
     <button class="button" id="myCanvas" onclick="share()">SAVE </button>
      </div>

我尝试使用cordova 2.2、2.9,所有版本保持不变,在2.3版本设备上测试。这是cordova版本设备的问题,还是其他问题,请任何人指出错误。

4

2 回答 2

5

最新版本的 jQuery 不再支持浏览器检测。如今,大多数人推荐特征检测而不是浏览器检测。

您需要恢复到 1.9 之前的 jQuery 库,使用 jQuery 迁移插件,或者将引用浏览器版本的 JavaScript 代码修改为其他版本,例如 Modernizr。

于 2013-11-30T06:36:16.167 回答
0

就像评论中已经提到的那样,您应该运行device仅在触发deviceready事件后才能访问的代码。

另一个问题是您在函数中定义了一个device变量。share()即使您在 deviceready 之后运行它,这也会覆盖 cordova 设备对象。所以删除线var device

于 2013-10-09T12:39:42.563 回答