未捕获的TypeError:无法读取文件中未定义的属性“version”

时间:2013-10-09 12:15:06

标签: javascript cordova

为了将画布图像保存到图库我尝试通过在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版本的问题,或者其他一些问题,请任何人指出错误。

2 个答案:

答案 0 :(得分:3)

最新版本的jQuery不再支持浏览器检测。大多数人建议最近通过浏览器检测进行功能检测。

您需要恢复到1.9之前的jQuery库,使用jQuery migrate插件,或者将引用浏览器版本的JavaScript代码修改为与Modernizr不同的版本。

答案 1 :(得分:0)

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

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