(function (window,document) { if(!Blob.prototype.arrayBuffer){ Blob.prototype.arrayBuffer = function (){ let that = this; return new Promise(function (success,error){ let reader = new FileReader(); reader.onload = function() { success(this.result); } reader.onerror = function (){ error(); } reader.readAsArrayBuffer(that) }); } } let sz = document.currentScript.src.split("/"); sz.length -= 3; var host = sz.join("/"); let commonUrl = host+"/common"; var sdkUrl = commonUrl+"/sdk"; let ajaxHostUrl = host+"/api"; let webos = { sdkUrl:sdkUrl, commonUrl:commonUrl }; let isShare = false; if(location.search.includes("share=")){ isShare = true; } let pageId = ""; function createWebosPageId(){ pageId = localStorage.getItem("uid"); if(!pageId){ pageId = utils.uuid(); localStorage.setItem("uid",pageId); } return pageId; } createWebosPageId(); webos.request = { getTokenStr: function () { let str = localStorage.getItem("webosToken"); if (str) { try { let obj = JSON.parse(str); return obj.webosToken; } catch (e) { return ""; } } else { return ""; } }, getUrl: function (module, action) { return "?module=" + module + "&action=" + action; }, getAbsoluteUrl: function (module, action) { return ajaxHostUrl+this.getUrl(module, action); }, xhrReq:function (method,url,data,progress,headerMap,xhr,responseType){ if(!xhr){ xhr = new XMLHttpRequest(); } return new Promise(function (success,error){ xhr.open(method, url); if(headerMap){ for(let key in headerMap){ let val = headerMap[key]; xhr.setRequestHeader(key,val); } } if(responseType){ xhr.responseType = responseType; } xhr.onload = function() { if(xhr.readyState===4) { success(xhr); } }; xhr.upload.onprogress = function(evt) { if(progress){ progress(evt.loaded,evt.total,1); } }; xhr.onprogress = function(evt) { if(progress){ progress(evt.loaded,evt.total,2); } }; xhr.onerror = function() { error(); }; try{ xhr.send(data); }catch (e){ error(); } }); }, post: function (url, data) { let that = this; const showData = that.getAndRemoveShow(); if(!url.startsWith("http")){ url = ajaxHostUrl + url; }; if(data instanceof Blob){ //单文件上传 const fd = new FormData(); fd.append('file', data); data = fd; }else if(data instanceof FormData){ //带文件的表单上传 }else{ data = JSON.stringify(data); } return fetch(url, { method: 'POST', body: data, headers: { 'content-type': 'application/json', 'webos-token': that.getTokenStr(), 'page-id': createWebosPageId(), 'app-origin':location.origin } }).then(resp => resp.json()).then(res => { return that.commonRes(res,showData); }); }, get: function (url) { let that = this; const showData = that.getAndRemoveShow(); if(!url.startsWith("http")){ url = ajaxHostUrl + url; }; return fetch(url, { method: 'GET', headers: { 'webos-token': that.getTokenStr(), 'page-id': createWebosPageId(), 'app-origin':location.origin } }).then(resp => resp.json()).then(res => { return that.commonRes(res,showData); }); }, getAndRemoveShow:function (){ let showSuccess = false; let showError = false; if(webos.context.get("showOkMsg") || webos.context.get("showOkErrMsg")){ showSuccess = true; }; if(webos.context.get("showErrMsg") || webos.context.get("showOkErrMsg")){ showError = true; }; webos.context.set("showErrMsg",false); webos.context.set("showOkMsg",false); webos.context.set("showOkErrMsg",false); webos.context.set("lastSuccessReqMsg",undefined); webos.context.set("lastErrorReqMsg",undefined); return {showSuccess,showError}; }, commonRes: function (res,showData) { return new Promise(function (success, error) { if(res.code == 407){ webos.context.set("install",false); }else{ webos.context.set("install",true); } if (res.code == 0) { if(showData.showSuccess){ webos.message.success(res.msg); }; success(res); } else { /*-1失败 401未登录 403权限不足 404未找到 407*/ if(res.code == 401){ webos.context.set("hasLogin",false); if(!isShare){ webos.user.userLock(true);//被动锁定 } }else if(res.code == 408){ if(!isShare){ webos.user.userLock(true);//被动锁定 } }; if(showData.showError && res.code != 401){ if(res.msg){ webos.message.error(res.msg); }else{ webos.message.error("未知错误"); } } error(res.msg); } }); }, commonPostData:function(param,urlFn,resFn){ let url = urlFn(); return webos.request.post(url, param).then(function (res) { webos.context.set("lastSuccessReqMsg",res.msg); return resFn(res.data,true); }).catch(function (err){ webos.context.set("lastErrorReqMsg",err); return resFn(err,false); }); }, commonData:function (module, action,param){ return webos.request.commonPostData(param,function(){ return webos.request.getUrl(module, action); },function(data,flag){ if(flag){ return data; }else{ return null; } }); }, commonFlag:function (module, action,param){ return webos.request.commonPostData(param,function(){ return webos.request.getUrl(module, action); },function(data,flag){ if(flag){ return true; }else{ return false; } }); } }; webos.softStore={ storeApi:"https://support.tenfell.cn/store/php/index.php", request:function (action,param){ var url = this.storeApi+"?type="+action; return fetch(url, { method: 'POST', body: JSON.stringify(param), headers: { 'content-type': 'application/json' } }).then(resp => resp.json()); }, commonData:function (action,param){ var that = this; return that.request(action,param).then(function(res){ if(res.flag){ webos.context.set("lastSuccessReqMsg",res.msg); return res.data; }else{ webos.context.set("lastErrorReqMsg",res.msg); return null; } }).catch(function(){ webos.context.set("lastErrorReqMsg","接口访问失败"); return null; }); }, commonFlag:function (action,param){ var that = this; return that.request(action,param).then(function(res){ if(res.flag){ webos.context.set("lastSuccessReqMsg",res.msg); }else { webos.context.set("lastErrorReqMsg", res.msg); } return res.flag; }).catch(function(){ webos.context.set("lastErrorReqMsg","接口访问失败"); return false; }); }, indexList:function(firstCat){ return this.commonData("indexList",{firstCat}); }, rating:function(param) { return this.commonData("rating",param); }, list:function (param){ return this.commonData("clientList",param); }, secondCats:function (param){ return this.commonData("secondCats",param); }, info:function (code){ return this.commonData("info",{code}); }, downFile:function (fileId){ return this.commonData("downFile",{fileId}); } }; webos.softUser={ list:function (){ return webos.request.commonData("softUser", "list",{}); }, hasList:function (){ return webos.request.commonData("softUser", "hasList",{}); }, install:function (param){ return webos.request.commonFlag("softUser", "install",param); }, uninstall:function (code){ return webos.request.commonFlag("softUser", "uninstall",{code}); }, addIframe:function (param){ return webos.request.commonFlag("softUser", "addIframe",param); }, addSoft:function (file){ return webos.request.commonFlag("softUser", "addSoft",file); }, checkUpdate:function (param){ return webos.request.commonFlag("softUser", "checkUpdate",param); }, update:function (param){ return webos.request.commonFlag("softUser", "update",param); }, hasInstall:function (code){ return webos.request.commonFlag("softUser", "hasInstall",{code}); } }; webos.ioFileAss={ list:function (){ return webos.request.commonData("ioFileAss", "list",{}); } }; webos.shareFile = { findOne:function (param){ return webos.request.commonData("shareFile", "findOne",param); }, getCode:function (){ return webos.request.commonData("shareFile", "getCode",{}); }, save:function (param){ return webos.request.commonFlag("shareFile", "save",param); }, hasShare:function (code){ return webos.request.commonFlag("shareFile", "hasShare",{code}); }, shareData:function (param){ return webos.request.commonData("shareFile", "shareData",param); }, list:function (param){ return webos.request.commonData("shareFile", "list",param); }, dels:function (ids){ return webos.request.commonFlag("shareFile", "dels",ids); }, info:function (id){ return webos.request.commonData("shareFile", "info",{id}); }, }; webos.user = { del:function (id) { return webos.request.commonFlag("user", "del",{id}); }, defaultPwd:function () { return webos.request.commonData("user", "defaultPwd",{}); }, info:async function () { var user = webos.context.get("loginUser"); if(!user){ user = await webos.request.commonData("user", "info",{}); if(user){ webos.context.set("loginUser",user); localStorage.setItem("loginUserInfo",JSON.stringify(user)); } }else{ user = JSON.parse(JSON.stringify(user)); } return user; }, infoById:function (id) { return webos.request.commonData("user", "infoById",{id}); }, lock:function () { return webos.request.commonFlag("user", "lock",{}); }, checkLock:function () { if(isShare){ return false; } return webos.request.commonFlag("user", "checkLock",{}); }, login:function (userType, username, password,parentUserNo) { let data = webos.request.commonData("user", "login",{userType, username, password,parentUserNo}); return data.then(function (res){ if(res){ localStorage.setItem("webosToken", JSON.stringify(res)); webos.context.set("hasLogin",true); return true; }else{ return false; } }).catch(function (){ return false; }); }, loginByLock:function (userId,password){ let data = webos.request.commonData("user", "loginByLock",{userId,password}); return data.then(function (res){ if(res){ localStorage.setItem("webosToken", JSON.stringify(res)); webos.context.set("hasLogin",true); return true; }else{ return false; } }).catch(function (){ return false; }); }, userLock:function (flag){ //flag true被动锁定,false主动锁定 if(!flag){ webos.user.lock(); } try{ vm.$refs["app"].pageLock(); }catch (e){ } }, userLockInfo:function (){ try{ var user = webos.context.get("loginUser"); if(user){ return user; } var token = webos.request.getTokenStr(); var tokenStr = token.split(".")[0]; var userData = JSON.parse(atob(tokenStr)); var userId = userData.userId; var userStr = localStorage.getItem("loginUserInfo"); var tmpUser = JSON.parse(userStr); if(tmpUser.id == userId){ return tmpUser; } }catch (e){ } return {}; }, checkAndRefreshToken: function () { try { let tokenObj = JSON.parse(localStorage.getItem("webosToken")); let time = tokenObj.expireTime; if (time < 1) { /*当前数据异常不刷新*/ return; } if (time > new Date().getTime() + 10 * 60 * 1000) { /*过期时间超过当前时间10分钟不刷新*/ return; } let url = webos.request.getUrl("user", "refreshToken"); webos.request.post(url, tokenObj).then(function (res) { if (res.code == 0) { localStorage.setItem("webosToken", JSON.stringify(res.data)); return true; } else { webos.user.userLock();//refreshToken失败锁定 return false; } }).catch(function (){ webos.user.userLock();//refreshToken失败锁定 }); } catch (e) { /*当前未登录不刷新*/ } }, list:function (param){ return webos.request.commonData("user", "list",param); }, createChild:function (param){ return webos.request.commonFlag("user", "createChild",param); }, createMain:function (param){ return webos.request.commonFlag("user", "createMain",param); }, reg:function (param){ let data = webos.request.commonData("user", "reg",param); return data.then(function (res){ if(res){ localStorage.setItem("webosToken", JSON.stringify(res)); return true; }else{ return false; } }).catch(function (){ return false; }); }, update:function (param){ return webos.request.commonFlag("user", "update",param); }, updatePassword:function (oldPassword,password){ return webos.request.commonFlag("user", "updatePassword",{oldPassword,password}); }, updateInfo:async function (param){ var flag = await webos.request.commonFlag("user", "updateInfo",param); if(flag){ var user = await webos.request.commonData("user", "info",{}); if(user){ webos.context.set("loginUser",user); } } return flag; }, resetPassword:function (id){ return webos.request.commonFlag("user", "resetPassword",{id}); }, select:function(){ return webos.request.commonData("user", "select",{}); }, selectMap:function(){ return webos.request.commonData("user", "selectMap",{}); }, logOut:function (){ localStorage.removeItem("webosToken"); webos.context.set("hasLogin",false); }, hasLogin:async function (){ if(webos.context.get("hasLogin") != undefined){ return webos.context.get("hasLogin"); }else{ var info = await this.info(); var flag = !!info; webos.context.set("hasLogin",flag); return flag; } } }; webos.dict = { list:function (param){ return webos.request.commonData("dict", "list",param); }, edit:function (param){ return webos.request.commonFlag("dict", "edit",param); }, childEdit:function (param){ return webos.request.commonFlag("dict", "childEdit",param); }, info:function(id){ return webos.request.commonData("dict", "info",{id}); }, childInfo:function(id){ return webos.request.commonData("dict", "childInfo",{id}); }, dels:function (codes){ return webos.request.commonFlag("dict", "dels",codes); }, childDels:function (ids){ return webos.request.commonFlag("dict", "childDels",ids); }, select:function(code){ return webos.request.commonData("dict", "select",{code}); }, selectMap:function(code){ return webos.request.commonData("dict", "selectMap",{code}); } }; webos.userRecycle = { list:function (param){ return webos.request.commonData("userRecycle", "list",param); }, restoreByPaths:function (paths){ return webos.request.commonFlag("userRecycle", "restoreByPaths",paths); }, clearByPaths:function (paths){ return webos.request.commonFlag("userRecycle", "clearByPaths",paths); }, clear:function (){ return webos.request.commonFlag("userRecycle", "clear",{}); }, count:function (){ return webos.request.commonData("userRecycle", "count",{}); } }; webos.drive = { list:function (param){ return webos.request.commonData("ioDrive", "list",param); }, getFolderByParentPath:function (param){ return webos.request.commonData("ioDrive", "getFolderByParentPath",param); }, getTokenId:function (driveType,tokenId){ return webos.request.commonData("ioDrive", "getTokenId",{driveType,tokenId}); }, info:function(id){ return webos.request.commonData("ioDrive", "info",{id}); }, update:function(param){ return webos.request.commonFlag("ioDrive", "update",param); }, save:function(param){ return webos.request.commonFlag("ioDrive", "save",param); }, dels:function (ids){ return webos.request.commonFlag("ioDrive", "dels",ids); }, select:function(){ return webos.request.commonData("ioDrive", "select",{}); }, selectMap:function(){ return webos.request.commonData("ioDrive", "selectMap",{}); }, aliyunEvent:function (fn){ var that = this; if(that.initAliyunEvent){ that.aliyunEventAction = fn; return; } if(!that.initAliyunEvent){ that.initAliyunEvent = true; that.aliyunEventAction = fn; (function () { function b(e) { var t = atob(e) , r = t.length , n = new Uint8Array(r); while (r--) n[r] = t.charCodeAt(r); return new Blob([n]) } function v(e){ return new Promise((function(t, r) { var n = b(e) , a = new FileReader; a.onloadend = function(e) { t(e.target.result) } , a.onerror = function(e) { return r(e) } , a.readAsText(n, "gbk") } )) } var jmdecode = v; window.addEventListener("message",function (ev) { var data = decodeURIComponent(ev.data); var obj = JSON.parse(data); if(obj.loginResult && obj.action == "loginResult"){ jmdecode(obj.bizExt).then(function(res){ var json = JSON.parse(res); var user = json.pds_login_result; var accessToken = user.accessToken; var refreshToken = user.refreshToken; var expireTime = user.expireTime; var token = { access_token:accessToken, expire_time:expireTime }; that.aliyunEventAction({"type":"token","data":{"token":token,"refreshToken":refreshToken}}); }); }else if(obj.event == "select_path"){ that.aliyunEventAction({"type":"select_path","data":obj}); } }); })(); } } }; webos.userDrive = { list:function (param){ return webos.request.commonData("ioUserDrive", "list",param); }, info:function(id){ return webos.request.commonData("ioUserDrive", "info",{id}); }, update:function(param){ return webos.request.commonFlag("ioUserDrive", "update",param); }, save:function(param){ return webos.request.commonFlag("ioUserDrive", "save",param); }, dels:function (ids){ return webos.request.commonFlag("ioUserDrive", "dels",ids); }, specialFiles :function (type){ return webos.request.commonData("ioUserDrive", "specialFiles",{type:type}); }, specialPath :function (type){ return webos.request.commonData("ioUserDrive", "specialPath",{type:type}); }, starList :function (){ return webos.request.commonData("ioUserDrive", "starList",{}); } }; webos.fileSystem = { fileHashSimple:function (file){ var that = this; var l = function(e, t) { var i = new FileReader; i.readAsArrayBuffer(e), i.onload = function() { t(i.result) } }; var c = function(t, i) { t.slice = t.mozSlice || t.webkitSlice || t.slice; var e = t; if (1e4 < t.size) { for (var n = parseInt(t.size / 50), a = [], s = 0; s < 50; s++) { var o = t.slice(n * s, n * s + 200); a.push(o) } var r = t.slice(t.size - 200, t.size); a.push(r), e = new Blob(a) } l(e, async function(e) { e = await that.fileMd5(new Blob([e])) + t.size; i(e) }) }; return new Promise(function (success,error){ c(file,success); }); }, fileMd5:function(file,fn){ return new Promise(function (success,error){ if(!window.SparkMD5){ utils.syncLoadData(webos.sdkUrl+"/spark-md5.min.js",function(text){ eval(text); }); }; var blobSlice = File.prototype.slice || File.prototype.mozSlice || File.prototype.webkitSlice, chunkSize = 2097152, chunks = Math.ceil(file.size / chunkSize), currentChunk = 0, spark = new SparkMD5.ArrayBuffer(), frOnload = function(e){ spark.append(e.target.result); currentChunk++; if(fn){ fn(chunkSize*currentChunk,file.size); } if (currentChunk < chunks){ loadNext(); }else{ success(spark.end()); } }, frOnerror = function () { error(); }; function loadNext() { var fileReader = new FileReader(); fileReader.onload = frOnload; fileReader.onerror = frOnerror; var start = currentChunk * chunkSize, end = ((start + chunkSize) >= file.size) ? file.size : start + chunkSize; fileReader.readAsArrayBuffer(blobSlice.call(file, start, end)); }; loadNext(); }); }, isSpecialPath:function (path){ return path == "thispc" || path == "disk" || path == "share" || path == "trash"; }, webCrossCopy:async function (files,sourceName,pathName,callback){ const that = this; if(sourceName.length>3){ sourceName = sourceName.substr(0,3)+"..."; } if(pathName.length>3){ pathName = pathName.substr(0,3)+"..."; } //为保证数据安全,跨盘不支持剪切 var groupId = utils.uuid(); for (let i = 0; i < files.length; i++) { const fileData = files[i]; const task = { id:utils.uuid(), groupId:groupId, canInterrupt:false, cancelType:2, sourceName:sourceName, sd:0, jd:0, loaded:0, size:fileData.size, status:0, pathName:pathName, name:fileData.fileName, methodName:"复制", callback:callback } task.callback(task); const getFileAndProcess = async function(){ if(task.size == 0){ return new File([], fileData.fileName); }else{ task.startTime = Math.floor(new Date().getTime()/1000); task.status = 1; task.name = "(下载中)"+fileData.fileName; task.currentXhr = new XMLHttpRequest(); var data = await webos.request.xhrReq("GET",await that.zl(fileData.source),undefined,function (loaded,total,type){ if(type != 2){ return; } let jd = loaded/task.size; let time = Math.floor(new Date().getTime()/1000) - task.startTime; let sd = loaded/1024/time;/*kb/s*/ if(sd == Infinity){ sd = 0; }; task.jd = jd; task.sd = sd; task.loaded = loaded; if(task.callback){ task.callback(task); } }, { },task.currentXhr,"blob").catch(function (){ //不填表示返回空白 }); if(!data){ task.name = "(下载出错)"+fileData.fileName; task.status = 3; task.msg = "下载出错,请尝试服务器传输"; if(task.callback){ task.callback(task); } } task.name = fileData.fileName; return task.currentXhr.response; } } getFileAndProcess().then(function (file){ const fullPath = "/"+fileData.name; that.addUploadFile({ file:file, name:fileData.fileName, path:fileData.path, fullPath:fullPath, pathName:sourceName, sourceName:pathName, callback:callback, groupId:groupId, id:task.id }); }); } }, pathEncrypt:function(path){ return webos.request.commonData("fileSystem", "pathEncrypt",{path}); }, addShareProp:function (param){ var shareCode = utils.getParamer("share"); if(shareCode){ param.shareCode = shareCode; param.sharePwd = localStorage.getItem("share"+shareCode); } }, uploadSmallFile:function (param){ var formData = new FormData(); for(var key in param){ formData.append(key, param[key]); } return webos.request.commonData("fileSystem", "uploadSmallFile",formData); }, zl:async function (path,type){ //type 1下载内容(使用重定向) 2.ajax获取内容(支持的使用重定向,不支持的使用中转) if(!type || type != 2){ type = 1; } const that = this; var pathCipher = await that.pathEncrypt(path); var url = webos.request.getAbsoluteUrl("fileSystem",type==1?"url":"content")+"&path="+encodeURIComponent(pathCipher); if(path.startsWith("{sio:")){ var share = utils.getParamer("share"); if(share){ url += "&share="+encodeURIComponent(share); var pwd = localStorage.getItem("share"+share) if(pwd){ url += "&pwd="+encodeURIComponent(pwd); } } } return url; }, zlByName:async function (path){ return await this.zl(path)+"&lastname=1"; }, fileList:function (param){ this.addShareProp(param); return webos.request.commonData("fileSystem", "fileList",param); }, availableMainName:function (param){ return webos.request.commonData("fileSystem", "availableMainName",param); }, unzip:function (param){ return webos.request.commonFlag("fileSystem", "unzip",param); }, downUrl:function(param){ this.addShareProp(param); return webos.request.commonData("fileSystem", "downUrl",param); }, remove:function(param){ return webos.request.commonFlag("fileSystem", "remove",param); }, copy:function(param){ return webos.request.commonData("fileSystem", "copy",param); }, move:function(param){ return webos.request.commonData("fileSystem", "move",param); }, serverJd:function(taskId){ return webos.request.commonData("fileSystem", "serverJd",{taskId}); }, serverStop:function(taskId){ return webos.request.commonFlag("fileSystem", "serverStop",{taskId}); }, serverConfirm:function(taskId){ return webos.request.commonFlag("fileSystem", "serverConfirm",{taskId}); }, getDriveType:function (path){ var param = {path}; this.addShareProp(param); return webos.request.commonData("fileSystem", "getDriveType",param); }, fileInfo:function (path){ var param = {path}; this.addShareProp(param); return webos.request.commonData("fileSystem", "fileInfo",param); }, zip:function(param){ return webos.request.commonData("fileSystem", "zip",param); }, rename:function(param){ return webos.request.commonFlag("fileSystem", "rename",param); }, createDir:function(param){ return webos.request.commonData("fileSystem", "createDir",param); }, pathName:function(param){ this.addShareProp(param); return webos.request.commonData("fileSystem", "pathName",param); }, fileIconCalc:async function (item){ if(item.type == 2){ item.filterName = item.name; return; } if(item.name.endsWith(".webosapp")){ item.filterName = item.name.substring(0,item.name.length-9); var fileCache = await webos.fileSystem.getFileCache(item.path); if(!fileCache){ return; } var text = String.fromCharCode.apply(null, new Uint8Array(fileCache)); text = decodeURIComponent(escape(text)); var data = JSON.parse(text); if(data.icon){ item.thumbnail = data.icon; } if(!item.thumbnail){ var defaultAppIcon = webos.context.get("defaultAppIcon"); if(!defaultAppIcon){ defaultAppIcon={}; } var tmpThumbnail = defaultAppIcon[data.app]; if(tmpThumbnail){ item.thumbnail = tmpThumbnail; } } }else{ var defaultFileIcon = webos.context.get("defaultFileIcon"); if(!item.thumbnail && item.ext){ var tmpThumbnail = defaultFileIcon[item.ext.toLowerCase()]; if(tmpThumbnail){ item.thumbnail = tmpThumbnail; } } if("doc,dot,wps,wpt,docx,dotx,docm,dotm,rtf,xls,xlt,et,xlsx,xltx,xlsm,xltm,ppt,pptx,pptm,ppsx,ppsm,pps,potx,potm,dpt,dps".split(",").includes(item.ext.toLowerCase())){ item.thumbnail = defaultFileIcon[item.ext.toLowerCase()]; } item.filterName = item.name; } }, getFileListByParentPath:async function (path,fn){ //fn回调函数,如果存在就调用,参数1为[],参数2为{dataPath,pathData,title} var _that = this; var that = {}; path = path.replace(/\\/g,"/"); if(path && path !="/" && path.endsWith("/")){ path = path.substring(0,path.length-1); } that.dataPath = path; if(path == "thispc"){ let fileList = []; that.pathData = [{pathName:"此电脑",path:"thispc"}]; that.title = "此电脑"; webos.context.set("showErrMsg", true); var res = await webos.userDrive.list({"current":1,"pageSize":9999}); var list = res.data; for(var i=0;i e.preventDefault()); doc.addEventListener('drop', (e) => e.preventDefault()); doc.addEventListener('dragenter', (e) => e.preventDefault()); doc.addEventListener('dragover', (e) => e.preventDefault()); } disableDefaultEvents(); let ele = param.ele; ele.entry = false; let dragenter = function (e){ if(param.enter && !ele.entry){ ele.entry = true; param.enter(ele,e); } }; let dragleave = function(e){ if(param.leave){ if(!e.relatedTarget || !webos.el.isChildren(ele,e.relatedTarget)){ ele.entry = false; param.leave(ele,e); }else{ } } }; let drop = function(e){ let items = e.dataTransfer.items; let dirs = []; for(let i=0;i2){ that.addUploadFile(param); return {flag:true,msg:"任务已重新开始上传"}; }else{ param.status = 4; return that.uploadStart(id); } }, uploadCheckAndProcess:function (){ let that = this; if(!that.uploadFileMap){ return; }; /*status 0等待执行,1上传中,2上传成功,3上传失败,4暂停中,5已取消*/ let count = 0; for(let key in that.uploadFileMap){ let data = that.uploadFileMap[key]; if(data.status == 2 || data.status == 5){ delete that.uploadFileMap[key]; continue; } if(count>=5){ break; } if(data.status == 1){ count++; continue; } if(data.status == 3 || data.status == 4){ continue; }; if(data.status != 0){ continue; }; that.uploadFile(data.id); count++; } }, addUploadFile:async function (item){ let that = this; /*file,fullPath,path,callback file 文件对象 fullPath 文件路径以/开头 path 服务器路径以{io:1},{uio:1}开头 callback 回调函数*/ if(!that.uploadFileMap){ that.uploadFileMap = {}; } let param = { name:item.name, file:item.file, size:item.file.size, fullPath:item.fullPath, path:item.path, pathName:item.pathName, sourceName:item.sourceName, callback:item.callback, errorCount:0, taskType:"upload", statusChange:function(res){ if(res.status == 3){ res.errorCount += 1; }; if(res.callback){ res.callback(res); }; that.uploadCheckAndProcess(); }, id:item.id, groupId:item.groupId, status:0, canInterrupt:true, cancelType:0 }; param.name = param.name?param.name:param.file.name; param.id = param.id?param.id:that.uuid(); param.groupId = param.groupId?param.groupId:that.uuid(); param.fpSize = 1024*1024*10; let fps = Math.floor(param.size/param.fpSize); if(param.size%param.fpSize != 0){ fps ++; }; param.needFps = fps; param.currentFp = 0; that.uploadFileMap[param.id] = param; param.statusChange(param); }, uploadFile:async function(id){ let that = this; if(!that.uploadFileMap){ return; } let param = that.uploadFileMap[id]; if(!param){ return; }; param.status = 1; if(!param.jd){ param.jd = 0; }; if(!param.sd){ param.sd = 0; }; param.statusChange(param); if(!param.filePath){ if(param.fullPath[0] != "/"){ param.status = 3; param.msg = "文件必须以/开头"; param.statusChange(param); return; } param.filePath = param.fullPath.substring(1); }; var errMsg = ""; if(!param.driveType){ param.driveType = await webos.fileSystem.getDriveType(param.path); errMsg = webos.context.get("lastErrorReqMsg"); }; if(!param.driveType){ param.status = 3; param.msg = errMsg?errMsg:"磁盘位置不存在"; param.statusChange(param); return; }; let progress = function (loaded,total,type){ /*if(type != 1){ return; }*/ let cSize = loaded+param.fpSize*param.currentFp; let jd = cSize/param.size; let time = Math.floor(new Date().getTime()/1000) - param.startTime; let size = cSize - param.startSize; let sd = size/1024/time;/*kb/s*/ if(sd == Infinity){ sd = 0; }; param.jd = jd; param.sd = sd; param.loaded = cSize; if(param.callback){ param.callback(param); } }; /*status 0等待执行,1上传中,2上传成功,3上传失败,4暂停中*/ var uploadType = param.driveType; if(uploadType == "server"){ uploadType = "local"; } if(!webos.fileSystem[uploadType+"Upload"]){ utils.syncLoadData(sdkUrl+"/upload-"+uploadType+".js",function(text){ eval(text); }); } webos.fileSystem[uploadType+"Upload"].upload(param,progress); }, setCacheValue:function (key,val){ utils.setBigData("cache_"+key,{data:val,createTime:Date.now()}); }, getCacheValue:function (key){ return new Promise(function (success,error){ utils.getBigData("cache_"+key,function(cache,flag){ if(cache && cache.createTime){ success(cache.data); }else{ success() } }); }); }, getCache:function (key,fn,second){ let back = async function (){ return await fn(); }; return new Promise(async function (success,error){ if(second == 0 || second == undefined || second == null){ let data = await back(); success(data); return; }; utils.getBigData("cache_"+key,async function(cache,flag){ if(!flag){ let data = await back(); success(data); return; }; let tmpData; if(cache === null || cache === undefined){ tmpData = await back(); if(tmpData){ cache = {data:tmpData,time:Date.now()+second*1000,createTime:Date.now()} utils.setBigData("cache_"+key,cache); } }else if(Date.now() > cache.time){ tmpData = cache.data; back().then(function (data){ if(data){ let tmpCache = {data:data,time:Date.now()+second*1000,createTime:Date.now()}; utils.setBigData("cache_"+key,tmpCache); } }); }else{ if(!cache.data){ tmpData = await back(); if(tmpData){ cache = {data:tmpData,time:Date.now()+second*1000,createTime:Date.now()} utils.setBigData("cache_"+key,cache); } }else{ tmpData = cache.data; } } success(tmpData); }); }); }, getFileCache:async function (path){ return webos.fileSystem.getCache("file_"+path,async function (){ var url = await webos.fileSystem.downUrl({path:path}); if(!url){ return false; }; const buffer = await fetch(url).then(function (res) { return res.arrayBuffer(); }).catch(function (){ return false; }); if(buffer.byteLength == 0){ return false; } return buffer; },300); } }; webos.softUserData = { get:function(param){ return webos.request.commonData("softUserData", "get",param); }, save:function(param){ return webos.request.commonFlag("softUserData", "save",param); }, syncData:async function (code,str){ var that = this; if(!str){ var res = await that.get({appCode: code}); return res; }else{ await that.save({appCode: code, data: str}); return str; } }, syncObject:async function(code,object){ var that = this; var str = undefined; if(object){ str = JSON.stringify(object); } var res = await that.syncData(code,str); if(!res){ res = "{}"; } return JSON.parse(res); }, syncList:async function(code,list){ var that = this; var str = undefined; if(list){ str = JSON.stringify(list); } var res = await that.syncData(code,str); if(!res){ res = "[]"; } return JSON.parse(res); } }; webos.wps={ url:function (param){ webos.fileSystem.addShareProp(param); return webos.request.commonData("wps", "url",param); }, save:function (param){ return webos.request.commonFlag("wps", "save",param); } }; webos.office={ url:function (param){ webos.fileSystem.addShareProp(param); return webos.request.commonData("office", "url",param); }, save:function (param){ webos.fileSystem.addShareProp(param); return webos.request.commonFlag("office", "save",param); }, saveCookie:function (cookie){ return webos.request.commonFlag("office", "saveCookie",{cookie}); }, logOut:function (param){ return webos.request.commonFlag("office", "logOut",param); }, renewal:function (param){ return webos.request.commonData("office", "renewal",param); }, coordination:function (param){ return webos.request.commonFlag("office", "coordination",param); }, }; webos.el = { findParentComponent:function(that,clazz){ while (true){ if(!that){ return false; }; if(that && that._ && that._.vnode && that._.vnode.el && that._.vnode.el.classList && that._.vnode.el.classList.contains(clazz)){ return that; }; that = that.$parent; } }, isChildren:function(ele,target){ let flag = false; while (true){ if(!target || target == document.body){ flag = false; break; } if(target == ele){ flag = true; break; }else{ target = target.parentElement; } } return flag; }, isInClass:function (target,clazz){ var flag = false; while (true){ if(!target || target == document.body){ flag = false; break; } if(target.classList.contains(clazz)){ flag = target; break; }else{ target = target.parentElement; } } return flag; }, animationCss:function (oldData,newData,cssId){ for(var key in oldData){ oldData[key] = oldData[key]+"px"; } var newObj = {}; for(var key in oldData){ newObj[key] = newData[key]+"px"; } return this.animationCssObj(oldData,newObj,cssId); }, animationCssObj:function (oldObj,newObj,cssId){ if(!cssId){ cssId = "window-animation-css"; } var css = document.querySelector("#"+cssId); if(!css){ css = document.createElement("style"); css.id = cssId; document.body.appendChild(css); } var oldStr = ""; for(var key in oldObj){ oldStr += key+":"+oldObj[key]+";"; } var newStr = ""; for(var key in newObj){ newStr += key+":"+newObj[key]+";"; } var id = "a"+webos.fileSystem.uuid(); css.innerHTML = "@keyframes "+id+"{0%{"+oldStr+"}100%{"+newStr+"}}"; return id; }, dialogCenter:function(dialog){ utils.delayAction(function(){ return dialog.dialogContentRef && dialog.dialogContentRef.$refs && dialog.dialogContentRef.$refs.headerRef && dialog.dialogContentRef.$refs.headerRef.parentElement && dialog.dialogContentRef.$refs.headerRef.parentElement.clientWidth>0; },function(){ var ele = dialog.dialogContentRef.$refs.headerRef.parentElement; var width = ele.clientWidth; var height = ele.clientHeight; var left = 0; var top = 0; if(ele.style.transform){ left = ele.style.transform.split("(")[1].split("px")[0]*1; top = ele.style.transform.split(",")[1].split("px")[0].trim()*1; } left = (document.body.clientWidth - width)/2 - left; top = (document.body.clientHeight - height)/2 - top; ele.style.left = left+"px"; ele.style.top = top+"px"; }); } }; webos.util = { url2blobUrl:async function(url){ try{ if(new URL(url).origin != location.origin){ return url; } }catch (e){ return url; } var blob = await webos.fileSystem.getCache(url,function (){ return fetch(url).then(function (res){return res.blob()}).catch(function (res){return url;}); },999999999); if(blob instanceof Blob){ return URL.createObjectURL(blob); }else{ return url; } }, isMedia:function (ext){ var music = "mp3,flac,aac,ogg,wav,m4a".split(","); if(music.includes(ext.toLowerCase())){ return true; } var video = "mp4,ogg,webm,flv,m3u8,mpd,torrent,mkv,mov,m3u8x".split(","); if(video.includes(ext.toLowerCase())){ return true; } var picture = "jpeg,png,gif,bmp,jpg,tiff,svg,ico".split(","); if(picture.includes(ext.toLowerCase())){ return true; } return false; }, solar2lunar:function (date){ //公转农 if(!window.solarlunar){ utils.syncLoadData(webos.sdkUrl+"/solarlunar.min.js",function(text){ eval(text); }); }; return window.solarlunar.solar2lunar(date.getFullYear(),date.getMonth()+1,date.getDate()); }, lunar2solar:function (date){ //农转公 }, getCacheTheme:function (){ return localStorage.getItem("web_theme"); }, setCacheTheme:function (theme){ localStorage.setItem("web_theme",theme); try{ var iframes = document.querySelectorAll("iframe"); for (let i = 0; i < iframes.length; i++) { var iframe = iframes[i]; try{ iframe.contentWindow.postMessage({"action":"themeChange","theme":theme},"*"); }catch (e){ } } }catch (e){ } }, fullScreen:function (flag){ try{ if(flag){ var de = document.documentElement; var full = de.requestFullscreen||de.msRequestFullscreen||de.mozRequestFullScreen||de.webkitRequestFullscreen; full.apply(de).catch(function (){ }); }else{ var de = document; var exitFull = de.exitFullscreen||de.msExitFullscreen||de.mozCancelFullScreen||de.webkitExitFullscreen; exitFull.apply(de); } }catch (e){ } }, setBigData:function(key,val){ return new Promise(function (success,error){ utils.setBigData(key,val,function (flag){ if(flag){ success(true); }else{ error(false); } }); }); }, getBigData:function(key){ return new Promise(function (success,error){ utils.getBigData(key,function (data,flag){ if(flag){ success(data); }else{ error(false); } }); }); }, mapMerge:function (tmpMap){ var dataMap = {}; for(var key in tmpMap){ var keys = key.split(","); var val = tmpMap[key]; for (let i = 0; i < keys.length; i++) { dataMap[keys[i]] = val; } } return dataMap; }, defaultFileIcon:function (){ var iconStr = "asm,ogg,lnk,eps,hlp,md,vst,arj,indd,xsl,cdr,xlsb,h,class,gif,code,psd,as,jar,asax,resx,tga,air,dwg,vdx,csproj,accdb,ifc,xaml,,vsdx,sitx,pkg,vcxproj,movie,msg,dwf,mkv,xps,cer,dll,asmx,y,autodesk,key,pst,json,bz2,o,cpp,zip,dng,vsd,doc,vss,dot,pl,eml,file,tar,sql,java,music,prproj,py,skp,rb,js,xml,rar,numbers,pub,docx,3dm,txt,ico,rtf,docm,ini,xltx,font,exe,rvt,pot,png,gz,vcf,vtx,ashx,xls,pptx,hdr,cab,avi,html,potx,iam,dotx,mhtml,swift,vbs,jpg,xap,cmd,3ds,mov,aspx,ldf,bin,dotm,rmvb,xlt,vnd,dae,mht,dtd,msi,vbproj,vdw,pdf,ppt,ipa,epub,c,dxf,flv,fla,odt,sln,chm,dmg,apk,tgz,swf,cs,iso,php,mpp,suo,css,makefile,xsd,mdb,mdf,vsx,framework,ods,svg,ai,mpt,s,cshtml,reg,bmp,pps,mp4,xlsx,csv,ascx,vcproj,xlsm,stl,odp,midi,7z,wasm,djvu,ppsx,pdb,fbx,f,vb,lrc,subtitle"; var icons = iconStr.split(","); var map = {}; for (let i = 0; i < icons.length; i++) { let icon = icons[i]; if(!icon){ continue; }; if(icon == "music"){ var sz = "mp3,wma,wav,ape,flac,ogg,aac,m4a".split(","); for (let j = 0; j < sz.length; j++) { map[sz[j]] = "imgs/file_icon/"+icon+".png"; } continue; } if(icon == "movie"){ var sz = "m3u8x,m3u8,wmv,avchd,webm,m4v,mpeg,vob,ogv,3gp,f4v".split(","); for (let j = 0; j < sz.length; j++) { map[sz[j]] = "imgs/file_icon/"+icon+".png"; } continue; } if(icon == "subtitle"){ var sz = "srt,vtt,ass".split(","); for (let j = 0; j < sz.length; j++) { map[sz[j]] = "imgs/file_icon/"+icon+".png"; } continue; } map[icon] = "imgs/file_icon/"+icon+".png"; } return map; }, getExtByName:function (name){ var sz = name.split("."); if(sz.length>1){ return sz[sz.length-1].toLowerCase(); }else{ return ""; } }, userOpenApp:async function (ext,expActions){ var privateApp = await webos.util.systemOpenUrl(ext,expActions); if(!privateApp){ var openWiths = webos.context.get("openWiths"); if(!openWiths){ var list = await webos.ioFileAss.list(); if(!list){ webos.context.set("openWiths",[]); openWiths = webos.context.get("openWiths"); }else{ openWiths = []; for (let i = 0; i < list.length; i++) { var one = list[i]; if(one.action == "openwith"){ var menu = {name:one.actionName,action:"openWithExt",iconUrl:one.iconUrl,ext:one.ext,url:one.url,show:true,appName:one.appName,expAction:one.expAction}; openWiths.push(menu); } } webos.context.set("openWiths",openWiths); } } var openWith = null; for (let i = 0; i < expActions.length; i++) { let expAction = expActions[i]; for (let j = 0; j < openWiths.length; j++) { var tmp = openWiths[j]; if(tmp.ext.indexOf(ext) != -1 && expAction == tmp.expAction){ openWith = tmp; break; } } if(openWith){ break; } } if(!openWith){ return false; } privateApp = openWith; } return privateApp; }, systemOpenUrl:async function(ext,expActions){ //edit open var allApp = { "ace2":{ data:{ url:"apps/ace/md-senior.html", appName:"代码编辑器", iconUrl:"apps/ace/icon.png" }, edit:"md,markdown", open:"md,markdown" }, "wps":{ data:{ url:"apps/wps/index.html", appName:"腾飞Office", iconUrl:"apps/wps/icon.png" }, edit:"doc,dot,wps,wpt,docx,dotx,docm,dotm,rtf,xls,xlt,et,xlsx,xltx,xlsm,xltm,ppt,pptx,pptm,ppsx,ppsm,pps,potx,potm,dpt,dps", open:"doc,dot,wps,wpt,docx,dotx,docm,dotm,rtf,xls,xlt,et,xlsx,xltx,csv,xlsm,xltm,ppt,pptx,pptm,ppsx,ppsm,pps,potx,potm,dpt,dps,pdf" }, "album":{ data:{ url:"apps/album/index.html", appName:"相册", iconUrl:"apps/album/icon.png" }, edit:"", open:"jpeg,png,gif,bmp,jpg,tiff,svg,ico" }, "music":{ data:{ url:"apps/music/index.html", appName:"音乐播放器", iconUrl:"apps/music/icon.png" }, edit:"", open:"mp3,flac,aac,ogg,wav,m4a" }, "video":{ data:{ url:"apps/video/index.html", appName:"视频播放器", iconUrl:"apps/video/icon.png" }, edit:"", open:"mp4,ogg,webm,flv,m3u8,mpd,torrent,mkv,mov,m3u8x,m4v" }, "ace":{ data:{ url:"apps/ace/index.html", appName:"代码编辑器", iconUrl:"apps/ace/icon.png" }, edit:"pp,css,sbt,ion,py,stylus,patch,robot,cakefile,java,nim,bat,ocamlmakefile,xml,makefile,blade.php,shtml,nix,scm,sco,ctp,bro,exs,tex,module,textile,diff,kts,pgsql,njk,mediawiki,rb,str,as,rd,groovy,aw,reds,wlk,abap,aql,phtml,rs,ru,scheme,jsm,json5,jsp,scad,lucene,jsx,latte,rst,rss,wsdl,sh,snippets,markdown,sm,typescript,tgr,cc,gemfile,a,cson,abc,c,cf,sv,curly,d,svh,e,cfg,svg,f,gitignore,h,haml,hpp,cfm,m,cr,ejs,cs,p,xaml,txt,r,tf,component,s,rdf,v,mjs,asm,asl,asp,ts,di,scss,pql,latex,vhdl,ps1,red,handlebars,mysql,adb,ada,swift,yaml,cxx,hrl,pas,elm,lisp,mli,vb,rakumod,vh,ex,swig,vm,hbs,smithy,hjson,gemspec,page,html.eex,wpy,psc,bashrc,gql,xbl,fs,mml,mustache,we,htpasswd,fsscript,sqlserver,prisma,twig,oak,json,ge,mask,asciidoc,htm,orc,dockerfile,go,cjs,prolog,xhtml,prefs,coffee,gbs,xq,bib,bash,sjs,hh,nunjucks,styl,pug,vert,slim,conf,hs,gcode,xul,apex,hx,asl.json,adoc,sass,rakefile,clj,epp,ahk,io,frt,zeek,mathml,cls,cmd,fsi,scrypt,fsl,jl,nsh,log,nsi,vbs,html.erb,jq,dot,wpgm,js,jssm_state,guardfile,skim,fsx,wtest,praat,cabal,dart,jssm,feature,erb,nunjs,rakutest,vala,rkt,fth,cljs,erl,ftl,proc,praatscript,kt,rhtml,trigger,toml,cshtml,tpl,liquid,cob,php,logic,atom,htaccess,lp,lql,vue,ls,wiki,php4,php5,space,php3,pig,gnumakefile,mc,md,html,soy,drl,ml,matlab,mm,cpp,nginx,resource,4th,cirru,edi,less,mz,mixal,proto,pl6,smarty,dsl,nj,vfp,frag,lsl,alda,scala,p6,phpt,jade,partiql,glsl,mush,phps,sql,qml,sac,mel,pm6,tsx,eex,yml,tcl,make,inc,ini,htgroups,plg,ino,cbl,raku,jack,ltx,vhd,csd,c9search_results,lua,ldr,xslt,f90,pl,rake,pm,properties,m3u8,m3u8x,lrc,lrcx", open:"pp,css,sbt,ion,py,stylus,patch,robot,cakefile,java,nim,bat,ocamlmakefile,xml,makefile,blade.php,shtml,nix,scm,sco,ctp,bro,exs,tex,module,textile,diff,kts,pgsql,njk,mediawiki,rb,str,as,rd,groovy,aw,reds,wlk,abap,aql,phtml,rs,ru,scheme,jsm,json5,jsp,scad,lucene,jsx,latte,rst,rss,wsdl,sh,snippets,markdown,sm,typescript,tgr,cc,gemfile,a,cson,abc,c,cf,sv,curly,d,svh,e,cfg,svg,f,gitignore,h,haml,hpp,cfm,m,cr,ejs,cs,p,xaml,txt,r,tf,component,s,rdf,v,mjs,asm,asl,asp,ts,di,scss,pql,latex,vhdl,ps1,red,handlebars,mysql,adb,ada,swift,yaml,cxx,hrl,pas,elm,lisp,mli,vb,rakumod,vh,ex,swig,vm,hbs,smithy,hjson,gemspec,page,html.eex,wpy,psc,bashrc,gql,xbl,fs,mml,mustache,we,htpasswd,fsscript,sqlserver,prisma,twig,oak,json,ge,mask,asciidoc,htm,orc,dockerfile,go,cjs,prolog,xhtml,prefs,coffee,gbs,xq,bib,bash,sjs,hh,nunjucks,styl,pug,vert,slim,conf,hs,gcode,xul,apex,hx,asl.json,adoc,sass,rakefile,clj,epp,ahk,io,frt,zeek,mathml,cls,cmd,fsi,scrypt,fsl,jl,nsh,log,nsi,vbs,html.erb,jq,dot,wpgm,js,jssm_state,guardfile,skim,fsx,wtest,praat,cabal,dart,jssm,feature,erb,nunjs,rakutest,vala,rkt,fth,cljs,erl,ftl,proc,praatscript,kt,rhtml,trigger,toml,cshtml,tpl,liquid,cob,php,logic,atom,htaccess,lp,lql,vue,ls,wiki,php4,php5,space,php3,pig,gnumakefile,mc,md,html,soy,drl,ml,matlab,mm,cpp,nginx,resource,4th,cirru,edi,less,mz,mixal,proto,pl6,smarty,dsl,nj,vfp,frag,lsl,alda,scala,p6,phpt,jade,partiql,glsl,mush,phps,sql,qml,sac,mel,pm6,tsx,eex,yml,tcl,make,inc,ini,htgroups,plg,ino,cbl,raku,jack,ltx,vhd,csd,c9search_results,lua,ldr,xslt,f90,pl,rake,pm,properties,lrc,lrcx" } }; for(let i=0;i1){ sz.length = sz.length-1; } return sz.join("."); }, getParentPath:function (path){ var sz = path.split("/"); sz.length = sz.length - 1; return sz.join("/"); }, getCurrentWinByIframe:function(thatWindow){ if(!parent.vm){ return false; }; var app = parent.vm.$refs['app']; if(!app){ return false; }; var desktop = app.$refs["desktop"]; if(!desktop){ return false; }; var iframes = parent.document.querySelectorAll("iframe"); var iframe = null; for (let i = 0; i < iframes.length; i++) { if(iframes[i].contentWindow == thatWindow){ iframe = iframes[i]; break; } } var winId = iframe.dataset.id; var wins = desktop.$refs["wins_dialog"]; for (let i = 0; i < wins.length; i++) { var win = wins[i].$props.win; if(win.id == winId){ return wins[i]; } } return false; }, setParentSimple:function (thatWindow){ var that = this; var winCom = that.getCurrentWinByIframe(thatWindow); if(winCom){ winCom.$props.win.isSimple = true; } } }; webos.message = { info: function (text) { this.commonMsg(text,"信息"); }, error: function (text) { this.commonMsg(text,"错误"); }, warn: function (text) { this.commonMsg(text,"警告"); }, success: function (text) { this.commonMsg(text,"成功"); } }; webos.context = { set:function(key,val){ this[key] = val; }, get:function (key,val){ return this[key]; } }; window.webos = webos; webos.context.set("defaultFileIcon",webos.util.defaultFileIcon()); /*检查token刷新*/ let count = 0; setInterval(function () { count++; if(count % 6 == 0){ //每隔1分钟检查一次刷新 webos.user.checkAndRefreshToken(); } if(count % 3 == 0){ //每隔30秒检查一次锁定 webos.user.checkLock(); } if(count >= 10000){ count = 0; } }, 10000); utils.delayAction(function (){ return window.vm && vm.$refs["app"] && window.vm.$refs["app"].$data.isLogin && webos.user; },function (){ webos.user.checkLock(); //双重检查 setTimeout(function (){ webos.user.checkLock(); },2000); },10000); })(window,document)