为了将画布图像保存到图库我尝试通过在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版本的问题,或者其他一些问题,请任何人指出错误。
答案 0 :(得分:3)
最新版本的jQuery不再支持浏览器检测。大多数人建议最近通过浏览器检测进行功能检测。
您需要恢复到1.9之前的jQuery库,使用jQuery migrate插件,或者将引用浏览器版本的JavaScript代码修改为与Modernizr不同的版本。
答案 1 :(得分:0)
就像评论中已经提到的那样,只有在deviceready事件被触发后才能运行访问device
的代码。
另一个问题是您在device
函数中定义了share()
变量。这将覆盖cordova设备对象,即使您在deviceready之后运行它也是如此。因此,请删除行var device
。