大家帮忙看看这是什么原因啊, 求代码详细解答
function exitApp(){
navigator.app.exitApp();
}
/****************文件上传****************/
//cordovaFlag是否有phonegap环境,从而决定是否调用本地方法
var cordovaFlag = false;
var uploadFileUrl = null;
document.addEventListener("deviceready", onDeviceReady, false);
var pictureSource; // getPicture:数据来源参数的一个常量
var destinationType; // getPicture中:设置getPicture的结果类型
function onDeviceReady() {
pictureSource = navigator.camera.PictureSourceType;
destinationType = navigator.camera.DestinationType;
cordovaFlag = true;
//getContacts();
//showComfire("提示!","测试对话框",function(index){
// alert(index);
//});
}
/**
* 读取联系人
*/
function getContacts(){
// find all contacts
var options = new ContactFindOptions();
options.filter = "";//搜索条件
options.multiple = true;
var filter = ["displayName", "phoneNumbers"];
navigator.contacts.find(filter, function(contacts){
for (var i = 0; i < contacts.length; i++) {
//for (var j = 0; j < contacts[i].phoneNumbers.length; j++) {
// alert(contacts[i].displayName+":"+contacts[i].phoneNumbers[j]);
//}
alert(contacts.length+":"+JSON.stringify(contacts[i]));
}
}, function(contactError){
alert('onError!');
}, options);
}
function getMsgs(){
}
function showComfire(title,msg,callback){
navigator.notification.confirm(
msg,
function(buttonIndex){
callback && callback(buttonIndex);
},
title,
['确定','取消']
);
}
function getFilePic(source, element) {
navigator.camera.getPicture(function (imageURI) {
uploadFileUrl = imageURI;
if(element){
$("#" + element).attr("src", imageURI);
}else{
$("#path") && $("#path").text(imageURI);
$("#path2") && $("#path2").text(imageURI);
}
}, function () {
if (source == pictureSource.CAMERA)
console.log('加载照相机出错!');
else
console.log('加载相册出错!');
}, {
quality: 50,
destinationType: destinationType.FILE_URI,
sourceType: source
});
}
function getFileAttach(callback) {
navigator.camera.getPicture(function (imageURI) {
callback && callback(imageURI);
}, function () {
}, {
quality: 50,
destinationType: destinationType.FILE_URI,
sourceType: 0
});
}
function captureSound(){
navigator.device.capture.captureAudio(captureSuccess, captureError, {limit:1});
}
// capture callback
var captureSuccess = function(mediaFiles) {
changePage("lushuaddpage","none");
var i, path, len;
for (i = 0, len = mediaFiles.length; i < len; i += 1) {
path = mediaFiles[i].fullPath;
uploadFileUrl = path;
$("#soundbar").attr("src",path);
// do something interesting with the file
}
};
// capture error callback
var captureError = function(error) {
navigator.notification.alert('Error code: ' + error.code, null, 'Capture Error');
};
// start audio capture
/**
* 上传意外终止处理。
* @param message
*/
function uploadBroken(message) {
alert(message);
};
/**
* 上传过程回调,用于处理上传进度,如显示进度条等。
*/
function uploadProcessing(progressEvent) {
if (progressEvent.lengthComputable) {
//已经上传
var loaded = progressEvent.loaded;
//文件总长度
var total = progressEvent.total;
//计算百分比,用于显示进度条
var percent = parseInt((loaded / total) * 100);
showLoader("正在上传文件:" + percent + "%");
//换算成MB
//loaded=(loaded/1024/1024).toFixed(2);
//total=(total/1024/1024).toFixed(2);
}
};
/**
* 选择文件后回调上传。
*/
function uploadFile(fileURI, url, success, fail) {
var options = new FileUploadOptions();
options.fileKey = "file";
options.fileName = fileURI.substr(fileURI.lastIndexOf('/') + 1);
options.mimeType = "multipart/form-data";
options.chunkedMode = false;
ft = new FileTransfer();
var uploadUrl = encodeURI(url);
console.log(fileURI);
ft.upload(fileURI, uploadUrl, success, fail, options);
//获取上传进度
ft.onprogress = uploadProcessing;
}
function localFile(fileUrl,filename) {
fileUrl = fileUrl || downloadUrl+"?fileName="+focusobj.attach;
filename = filename || focusobj.attach;
window.requestFileSystem(LocalFileSystem.PERSISTENT, 5*1024*1024, function(fileSystem){
//创建目录
fileSystem.root.getDirectory("file_mobile", {create:true},
function(fileEntry){ },
function(){ console.log("创建目录失败");});
var _localFile = "file_mobile/"+filename;
var _url = fileUrl;
//查找文件
fileSystem.root.getFile(_localFile, null, function(fileEntry){
//文件存在就直接显示
showLoader("文件已经下载过了!",true);
}, function(){
//否则就到网络下载图片!
fileSystem.root.getFile(_localFile, {create:true}, function(fileEntry){
var targetURL = fileEntry.toURL();
download(_url,targetURL);
},function(){
alert('下载图片出错');
});
});
}, function(evt){
console.log("加载文件系统出现错误");
});
}
function download(fileUrl,targetUrl){
showLoader("正在下载请稍候!");
var fileTransfer = new FileTransfer();
var uri = encodeURI(fileUrl);
fileTransfer.download(uri,targetUrl,
function(entry) {
showLoader("下载成功,文件已保存到file_mobile文件夹下",true);
console.log("download complete: " + entry.fullPath);
},
function(error) {
console.log("download error source " + error.source);
console.log("download error target " + error.target);
console.log("upload error code" + error.code);
},
false
);
}
/**
* 上传成功回调.
* @param r
*/
function uploadSuccess(r) {
alert('文件上传成功:' + r.response);
}
/**
* 上传失败回调.
* @param error
*/
function uploadFailed(error) {
alert('上传失败了。');
}
/****************文件上传结束****************/
function openJisuanqi(){
cordova.exec(function(data){
}, null, "Plugs", "jisuanqi", []);
}
function toBaidu(){
cordova.exec(function(){},function(){},"Plugs","tobaidu",[{city: "",str:""}]);
}
function toDail(el){
var tel = $(el).text();
tel = tel.split(":")[1];
cordova.exec(function(){},function(){},"Plugs","toDail",[{tel:tel}]);
}
function toAddress(el){
var address = $(el).text();
address = address.split(":")[1];
cordova.exec(function(){},function(){},"Plugs","toAddress",[{address:address}]);
}
function toFocusAdressMap(){
var address = focusgood.title;
cordova.exec(function(){},function(){},"Plugs","toAddress",[{address:address}]);
}
function uplaodImg(callback){
if(uploadFileUrl){
uploadFile(uploadFileUrl,uploadUrl,function(r){
var img = r.response;
callback && callback(img);
},function(error){
showLoader(error,true);
});
}else{
showLoader("请选择图片!",true);
callback && callback("");
}
}
function uploadAttach(fileUrl,callback){
if(fileUrl){
uploadFile(fileUrl,uploadUrl,function(r){
var img = r.response;
callback && callback(img);
},function(error){
showLoader(error,true);
});
}else{
showLoader("请选择图片!",true);
}
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<meta name="format-detection" content="telephone=no"/>
<!-- WARNING: for iOS 7, remove the width=device-width and height=device-height attributes. See https://issues.apache.org/jira/browse/CB-4323 -->
<!--<meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width, height=device-height, target-densitydpi=device-dpi" />-->
<meta name="viewport" content="width=320; user-scalable=no"/>
<link rel="stylesheet" type="text/css" href="jb/jquery.mobile-1.4.5.css"/>
<link rel="stylesheet" type="text/css" href="jb/theme-classic.css"/>
<link rel="stylesheet" type="text/css" href="jb/style.css"/>
<script type="text/javascript" src="jb/jquery.js"></script>
<script type="text/javascript" src="jb/jquery.mobile-1.4.5.js"></script>
<script type="text/javascript" src="jb/iscroll.js"></script>
<script type="text/javascript" src="jslib/hammer.js"></script>
<script type="text/javascript" src="js/commontools.js"></script>
<script type="text/javascript" src="js/jbtool.js"></script>
<script type="text/javascript" src="js/app.js"></script>
<script type="text/javascript" src="js/user.js"></script>
<script type="text/javascript" src="js/yewu.js"></script>
<title>学习</title>
<style type="text/css" media="all">
#wrapper {
padding: 0;
position: absolute;
z-index: 1;
top: 40px;
bottom: 40px;
left: 0;
width: 100%;
overflow: auto;
}
#scroller {
position: absolute;
z-index: 1;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
width: 100%;
padding: 0;
}
</style>
</head>
<body>
<!--用户模块---------------------------------------------------------------------------------->
<div data-role="page" data-control-title="Login" id="loginpage" data-theme="b">
<div data-role="header" data-theme="a">
<h1 class="ui-title">
用户登陆
</h1>
</div>
<div role="main" class="ui-content">
<form id="loginform" name="loginform">
<div class="ui-field-contain" data-controltype="textinput">
<label>
用户名:
</label>
<input id="lusername" name="username" placeholder="" value="" type="text">
</div>
<div class="ui-field-contain" data-controltype="textinput">
<label>
密码:
</label>
<input id="lpasswd" name="passwd" placeholder="" value="" type="password">
</div>
<div class="ui-field-contain" data-controltype="textinput">
<label for="remember">
自动登陆:
</label>
<select name="remember" id="remember" data-theme="" data-role="slider">
<option value="0">
Off
</option>
<option selected="selected" value="1">
On
</option>
</select>
</div>
</form>
<a href="#" onclick="login();" class="ui-btn ui-btn-a">
登陆
</a>
<a href="#" onclick="toRegister();" class="ui-btn ui-btn-a">
注册
</a>
</div>
</div>
<div data-role="page" data-theme="b" data-control-title="Register" id="registerpage">
<div data-role="header">
<h1 class="ui-title">
快速注册
</h1>
</div>
<div role="main" class="ui-content">
<form id="registerform">
<!--<div class="ui-field-contain" data-controltype="textinput">
<label>
头像:
</label>
<img id="rmyImage1" src="" style="width: 100%;" >
<a href="#" onclick="getFilePic(0,'rmyImage1');" class="ui-btn ui-btn-a">
选择图片
</a>
<a href="#" onclick="getFilePic(1,'rmyImage1');" class="ui-btn ui-btn-a">
拍照
</a>
</div>-->
<div class="ui-field-contain" data-controltype="textinput">
<label>
用户名:
</label>
<input name="username" placeholder="必填" value="" type="text">
</div>
<div class="ui-field-contain" data-controltype="textinput">
<label>
密码:
</label>
<input name="passwd" placeholder="必填" value="" type="password">
</div>
<div class="ui-field-contain" data-controltype="textinput">
<label>
密码重复:
</label>
<input name="passwd2" placeholder="必填" value="" type="password">
</div>
<div class="ui-field-contain" data-controltype="textinput">
<label>
电话:
</label>
<input name="tel" placeholder="必填" value="" type="number">
</div>
<!--<div class="ui-field-contain" data-controltype="textinput">
<label>
地址:
</label>
<input name="address" placeholder="必填" value="" type="text">
</div>-->
<!--<div class="ui-field-contain" data-controltype="textinput">
<label>
QQ:
</label>
<input name="qq" placeholder="" value="" type="text">
</div>
<div class="ui-field-contain" data-controltype="textinput">
<label>
微信:
</label>
<input name="wechat" placeholder="" value="" type="text">
</div>-->
<div class="ui-field-contain" data-controltype="textinput">
<label>
邮箱:
</label>
<input name="email" placeholder="" value="" type="email">
</div>
<div class="ui-field-contain" data-controltype="dateinput">
<label>
生日:
</label>
<input name="birth" placeholder="" value="" type="date">
</div>
<div class="ui-field-contain" data-controltype="selectmenu">
<label>
性别:
</label>
<select name="sex">
<option value="男">
男
</option>
<option value="女">
女
</option>
</select>
</div>
</form>
<a href="#" onclick="register();" class="ui-btn ui-btn-b">提交</a>
<a href="#" onclick="toLogin();" class="ui-btn ui-btn-b">取消</a>
</div>
</div>
<div data-role="page" data-theme="b" data-control-title="Userinfo" id="userinfopage">
<div data-role="header">
<h1 class="ui-title">
个人信息
</h1>
<a href="#" onclick="editUserInfo();" data-icon="edit" data-iconpos="left" class="ui-btn ui-btn-right ui-icon-edit ui-btn-icon-left">
修改
</a>
<a href="#" onclick="goback();" data-icon="back" data-iconpos="left" class="ui-btn ui-btn-left ui-icon-back ui-btn-icon-left">
返回
</a>
</div>
<div role="main" class="ui-content">
<form id="userform">
<div id="gereninfo" class="ui-field-contain" data-controltype="textinput">
<label id="vusername">
用户名:
</label>
</div>
<div class="ui-field-contain" data-controltype="textinput">
<label>
电话:
</label>
<input name="tel" id="vtel" placeholder="" value="" type="text">
</div>
<!--<div class="ui-field-contain" data-controltype="textinput">
<label>
QQ:
</label>
<input name="qq" id="vqq" placeholder="" value="" type="text">
</div>
<div class="ui-field-contain" data-controltype="textinput">
<label>
微信:
</label>
<input name="wechat" id="vwechat" placeholder="" value="" type="text">
</div>-->
<div class="ui-field-contain" data-controltype="textinput">
<label>
邮箱:
</label>
<input name="email" id="vemail" placeholder="" value="" type="email">
</div>
<div class="ui-field-contain" data-controltype="dateinput">
<label>
生日:
</label>
<input name="birth" id="vbirth" placeholder="" value="" type="date">
</div>
<div class="ui-field-contain" data-controltype="selectmenu">
<label>
性别:
</label>
<select name="sex" id="vsex">
<option value="男" selected="selected">
男
</option>
<option value="女">
女
</option>
</select>
</div>
</form>
<div id="editbutton" style="display: none">
<a href="#" onclick="updateUserInfo();" class="ui-btn ui-btn-b">提交</a>
<a href="#" onclick="goback();" class="ui-btn ui-btn-b">取消</a>
</div>
</div>
</div>
<div data-role="page" data-theme="b" data-control-title="ChangePasswd" id="passwdpage">
<div data-role="header">
<h1 class="ui-title">
修改密码
</h1>
<a href="#" onclick="goback();" data-icon="back" data-iconpos="left" class="ui-btn ui-btn-left ui-icon-edit ui-btn-icon-left">
返回
</a>
</div>
<div role="main" class="ui-content">
<form id="passwdform">
<div class="ui-field-contain" data-controltype="textinput">
<label id="pusername">
用户名:
</label>
</div>
<div class="ui-field-contain" data-controltype="textinput">
<label>
原始密码:
</label>
<input name="oldpasswd" placeholder="" value="" type="password">
</div>
<div class="ui-field-contain" data-controltype="textinput">
<label>
新密码
</label>
<input name="passwd" placeholder="" value="" type="password">
</div>
<div class="ui-field-contain" data-controltype="textinput">
<label>
密码重复
</label>
<input name="passwd2" placeholder="" value="" type="password">
</div>
</form>
<a href="#" onclick="changePasswd();" class="ui-btn ui-btn-b">提交</a>
<a href="#" onclick="goback();" class="ui-btn ui-btn-b">取消</a>
</div>
</div>
<div data-role="page" data-theme="b" id="morepage">
<div data-theme="b" data-role="header" data-position="fixed">
<h1 class="ui-title">
我的
</h1>
</div>
<div role="main" class="ui-content">
<ul data-role="listview" data-theme="b" data-inset="false">
<li onclick="toTest(1);"><h2>自我测试</h2></li>
<!--<li><a href="#" onclick="toAddPage();">上传资料</a></li>-->
<li onclick="myinfo();"><h2>个人信息</h2></li>
<li onclick="toChangePasswd();"><h2>修改密码</h2></li>
<li onclick="logout();"><h2>注销登录</h2></li>
<li onclick="exitApp();"><h2>退出</h2></li>
</ul>
</div>
<div data-role="footer" data-position="fixed" data-theme="b">
<div data-role="navbar">
<ul>
<li><a href="javascript:tonav(2);" data-icon="home">公告</a></li>
<li><a href="javascript:tonav(3);" data-icon="star">视频</a></li>
<li><a href="javascript:tonav(4);" data-icon="comment">资料</a></li>
<li><a href="javascript:morePage();" data-icon="info">我的</a></li>
</ul>
</div>
</div>
</div>
<!--用户模块结束--------------------------------------------------------------------------------------------------------------------------------------->
<div data-role="page" data-theme="b" id="kecheng">
<div data-role="header" data-position="fixed">
<h1 class="ui-title">
公告列表
</h1>
</div>
<div role="main" class="ui-content" >
<ul id="dongtailist" data-role="listview" data-filter="true" data-filter-placeholder="输入关键字..." data-inset="true" >
</ul>
</div>
<div data-role="footer" data-theme="b" data-position="fixed" style="overflow: hidden;">
<div data-role="navbar">
<ul>
<li><a href="javascript:tonav(2);" data-icon="home">公告</a></li>
<li><a href="javascript:tonav(3);" data-icon="star">视频</a></li>
<li><a href="javascript:tonav(4);" data-icon="comment">资料</a></li>
<li><a href="javascript:morePage();" data-icon="info">我的</a></li>
</ul>
</div>
</div>
</div>
<div data-role="page" data-theme="c" id="shipinpage">
<div data-theme="b" data-role="header" data-position="fixed">
<h1 class="ui-title">
教学视频
</h1>
<!--<a href="#" onclick="toMyBill();" data-iconpos="right" class="ui-btn ui-btn-right ui-icon-user ui-btn-icon-left">
内容定制
</a>-->
</div>
<div role="main" class="ui-content">
<ul id="shipinlist" data-role="listview" data-filter="true" data-filter-placeholder="输入视频名称..." data-inset="true" >
</ul>
</div>
<div data-role="footer" data-theme="b" data-position="fixed" style="overflow: hidden;">
<div data-role="navbar">
<ul>
<li><a href="javascript:tonav(2);" data-icon="home">公告</a></li>
<li><a href="javascript:tonav(3);" data-icon="star">视频</a></li>
<li><a href="javascript:tonav(4);" data-icon="comment">资料</a></li>
<li><a href="javascript:morePage();" data-icon="info">我的</a></li>
</ul>
</div>
</div>
</div>
<div data-role="page" data-theme="c" id="ziliaopage">
<div data-theme="b" data-role="header" data-position="fixed">
<h1 class="ui-title">
资料下载
</h1>
<!--<a href="#" onclick="toMyBill();" data-iconpos="right" class="ui-btn ui-btn-right ui-icon-user ui-btn-icon-left">
内容定制
</a>-->
</div>
<div role="main" class="ui-content">
<ul id="ziliaolist" data-filter="true" data-filter-placeholder="输入视频名称..." data-role="listview" data-inset="true" >
</ul>
</div>
<div data-role="footer" data-theme="b" data-position="fixed" style="overflow: hidden;">
<div data-role="navbar">
<ul>
<li><a href="javascript:tonav(2);" data-icon="home">公告</a></li>
<li><a href="javascript:tonav(3);" data-icon="star">视频</a></li>
<li><a href="javascript:tonav(4);" data-icon="comment">资料</a></li>
<li><a href="javascript:morePage();" data-icon="info">我的</a></li>
</ul>
</div>
</div>
</div>
<div data-role="page" data-theme="c" data-control-title="Register" id="detail">
<div data-theme="b" data-role="header">
<h1 class="ui-title" id="commh1">
</h1>
<a href="#" onclick="goback();" data-iconpos="left" class="ui-btn ui-btn-left ui-icon-back ui-btn-icon-left">
返回
</a>
</div>
<div role="main" class="ui-content">
<div class="ui-field-contain" data-controltype="textinput">
<label id="vtitle">
</label>
<input type="hidden" id="pid">
</div>
<div class="ui-field-contain" data-controltype="textinput">
<label id="vndate">
</label>
</div>
<div id="img" class="ui-field-contain" data-controltype="textinput">
<img width="100%" id="vimg" onclick="ownpage(this);">
</div>
<div id="video" class="ui-field-contain" data-controltype="textinput">
<video width="100%" id="vvideo" controls="controls"></video>
</div>
<div id="ziliao" class="ui-field-contain" data-controltype="textinput">
<a href="#" id="vziliao"></a>
</div>
<div class="ui-field-contain" data-controltype="textinput">
<label id="vnote">
</label>
</div>
<div class="ui-field-contain" id="xiazai" data-controltype="textinput">
<a href="#" onclick="localFile();" class="ui-btn ui-btn-b">
下载
</a>
</div>
<ul data-role="listview" data-split-icon="minus" id="replaylv" data-inset="true">
</ul>
<textarea id="replaynote"></textarea>
<a href="#" onclick="addReplay();" class="ui-btn ui-btn-b">发表评论</a>
</div>
</div>
<div data-role="page" data-theme="b" data-control-title="Register" id="addpage">
<div data-role="header">
<h1 class="ui-title">
上传资料
</h1>
</div>
<div role="main" class="ui-content">
<form id="addform">
<div class="ui-field-contain" data-controltype="textinput">
<label id="ziliaotitle">
</label>
<img id="rmyImage1" src="" style="width: 100%;" >
<a href="#" onclick="getFilePic(0,'ziliaotitle');" class="ui-btn ui-btn-a">
选择文件
</a>
</div>
<div class="ui-field-contain" data-controltype="textinput">
<label>
分类:
</label>
<select name="bigtypeid" id="bigtypeid">
<option value="4">资料</option>
<option value="3">视频</option>
</select>
</div>
<div class="ui-field-contain" data-controltype="textinput">
<label>
名称:
</label>
<input name="title" placeholder="必填" value="" type="text">
</div>
<div class="ui-field-contain" data-controltype="textinput">
<label>
描述:
</label>
<textarea name="note"></textarea>
</div>
</form>
<a href="#" onclick="addObj();" class="ui-btn ui-btn-b">提交</a>
</div>
</div>
<div data-role="page" data-theme="c" data-control-title="imgshow" id="imgshow">
<div id="imgcontaner">
<img style="width: 100%;position: absolute;top: 0px;left: 0px" id="showimg">
<a href="#" onclick="goback();" data-icon="back" data-iconpos="left" class="ui-btn ui-btn-left ui-icon-back ui-btn-icon-left">
返回
</a>
</div>
</div>
</body>
<script type="text/javascript" src="cordovatool/cordovatools.js"></script>
</html>
找不到LocalFileSystem.PERSISTENT