Hbuider hybrid app开发之js常用方法
2016-07-22 11:36
597 查看
(function(w, _, $, u) { _.plusReady(function() { plus.webview.currentWebview().setStyle({ softinputMode: "adjustResize" }); }); w.openView = function(url,extras,aniShow) { var showStyle = {duration: 10},waitingStyle = {autoShow: false}; // var id = url.split('?')[0].replace(/(.*)\//g, '').split('.')[0]; var id = url; showStyle.aniShow = aniShow ? aniShow : 'pop-in'; extras = extras?extras:{}; if (w.plus) { _.openWindow({ id: id, url: url,extras:extras,styles: {popGesture: "close"},show: showStyle,waiting: waitingStyle,createNew:false }); } else { location.href = url; } }; w.setItem = function(key, value) { w.plus ? plus.storage.setItem(key, value) : localStorage.setItem(key, value); }; w.getItem = function(key) { return w.plus ? plus.storage.getItem(key) : localStorage.getItem(key); }; w.clearItem = function() { w.plus ? plus.storage.clear() : localStorage.clearItem(); }; w.removeItem = function(key) { w.plus ? plus.storage.removeItem(key) : localStorage.removeItem(key); }; u.token = 'O]dWJ,[*g)%k"?q~g6Co!`cQvV>>Ilvw'; //辅助工具 u.mypost = function(app, clazz, pdata, show, success, error) { var sign = hex_md5(app + clazz + u.token),waiting = null; _.extend(true, pdata, { 'app': app, 'class': clazz, 'sign': sign }); (w.plus && show) && _.later(function(){ waiting = plus.nativeUI.showWaiting(show === true ? '' : show); },100); console.log(JSON.stringify(pdata)); setTimeout(function(){ $.ajax({ url: "http://xxxxxx",type: "post",data: pdata,timeout:6000, success: function(data) { waiting && waiting.close();waiting = null; _.isFunction(success) ? success(data) : ''; }, error: function(xhr) { console.log(JSON.stringify(xhr)); waiting && waiting.close();waiting = null; _.isFunction(error) ? error() : _.toast('网络连接超时'); } }); },800); }; u.urlParam = function(name) {//获取url中参数 var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); var r = location.search.substr(1).match(reg); return (r != null) ? decodeURIComponent(r[2]).replace('#', '') : null; }; u.format = function(date, formatStr) { var time; if (typeof date == "number") time = new Date(date); if (date instanceof Date) time = date; var o = { "M+": time.getMonth() + 1, "d+": time.getDate(), "h+": time.getHours(), "m+": time.getMinutes(), "s+": time.getSeconds(), "q+": Math.floor((time.getMonth() + 3) / 3), "S": time.getMilliseconds() }; if (/(y+)/.test(formatStr)) { formatStr = formatStr.replace(RegExp.$1, (time.getFullYear() + "").substr(4 - RegExp.$1.length)); } for (var k in o) { if (new RegExp("(" + k + ")").test(formatStr)) { formatStr = formatStr.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length)); } } return formatStr; }; u.parse = function(date) { return new Date(date.replace(/-/g, "/")); }; var chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split(''); //内存问题 u.uuid = function(len, radix) { var i, r, uid = []; radix = radix || chars.length; if (len) { for (i = 0; i < len; i++) uid[i] = chars[0 | Math.random() * radix]; } else { uid[8] = uid[13] = uid[18] = uid[23] = '-', uid[14] = '4'; for (i = 0; i < 36; i++) { if (!uid[i]) { r = 0 | Math.random() * 16, uid[i] = chars[(i == 19) ? (r & 0x3) | 0x8 : r]; } } } return uid.join(''); }; u.call= function(){//打电话 var btnArray = ['是','否']; var $tel = $("#tel"),tel = $("#tel").text() _.confirm('是否给“'+tel+'”进行拨号','',btnArray,function(e){ if(e.index == 0){ plus.device.dial(tel,false); } },'div'); } u.getContacts = function(cname,cphone){//访问通讯录----@param:cname(联系人姓名dom对象);cphone(联系人电话dom对象) if(_.os.ios){//ios var contactsArr = new Array(); var btns = ["不允许","好"]; _.confirm('"xxxxx"要使用您的通讯录',"",btns,function(e){ if(e.index == 1){ plus.contacts.getAddressBook(plus.contacts.ADDRESSBOOK_PHONE, function (addressbook) { addressbook.find(null,function(contacts){ //只是获取到联系人 cname.val(contacts[0].displayName); cphone.val("135xxxx2830"); }, function () { _.toast("error"); },{multiple:true}); },function(e){ alert("Get address book failed: " + e.message); }); } },'div'); }else{//android var btns = ["不允许","好"]; _.confirm('"xxxx"要使用您的通讯录',"",btns,function(e){ if(e.index == 1){ var s_ret = null; var REQUESTCODE = 1000; main = plus.android.runtimeMainActivity(); var Intent = plus.android.importClass('android.content.Intent'); var ContactsContract = plus.android.importClass('android.provider.ContactsContract'); var intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI); main.onActivityResult = function(requestCode, resultCode, data) { if (REQUESTCODE == requestCode) { var phoneNumber = null; var resultString = ""; var context = main; plus.android.importClass(data); var contactData = data.getData(); var resolver = context.getContentResolver(); plus.android.importClass(resolver); var cursor = resolver.query(contactData, null, null, null, null); plus.android.importClass(cursor); cursor.moveToFirst(); var givenName = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); s_ret = givenName; var contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID)); var pCursor = resolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = " + contactId, null, null); while (pCursor.moveToNext()) { phoneNumber = pCursor.getString( pCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); s_ret += '--' + phoneNumber; } var rets = new Array(); rets = s_ret.split("--"); cphone.val(rets[1]);//赋值 cname.val(rets[0]); cursor.close(); pCursor.close(); } }; main.startActivityForResult(intent, REQUESTCODE); } },'div'); } }; u.close = function(wid){//关闭webveiw if(w.plus){ var thisweb = plus.webview.getWebviewById(wid); if(thisweb){ console.log(thisweb.id+" has closed "); thisweb.close(); } } }; var wait =60; u.time = function(o){//倒计时获取验证码 if (wait == 0) { o.removeAttribute("disabled"); o.textContent = "再次获取验证码"; o.value = "再次获取验证码"; wait = 60; } else { o.setAttribute("disabled", true); o.textContent = "倒计时(" + wait + "s)"; o.value = "倒计时(" + wait + "s)"; wait--; setTimeout(function() { time(o); }, 1000) } }; u.upImg = function(self){// 拍照-选择照片添加文件 plus.nativeUI.actionSheet({cancel:"取消",buttons:[{title:"拍照上传"},{title:"相册选择"}]}, function(e){ if(e.index == 0) return; if(e.index == 1){ plus.camera.getCamera(1).captureImage(function(p){ self.src = plus.io.convertLocalFileSystemURL(p); }); }else if(e.index == 2){ plus.gallery.pick(function(p){ self.src = p; },{ filter:"image",multiple:false }) } }); }; u.exitApp = function(){//退出应用程序 if(plus.os.name=="Android"){ plus.runtime.quit(); } }; w.toIndex = function(i) { /** * 跳转到首页(首页webveiw在存在的情况下) * 参数默认为0(首页tab bar 的第一个子页面) * (首页要模拟触发事件) * */ var i = i || 0;//设置默认值为0 var idArr=["gohome","goNewPro","goMyinfo","goMycenter"]; var main = plus.webview.getWebviewById("index.html"); console.log("应用首页,并且切换到对应的选项卡");//显示首页 mui.fire(main,'goIndex',{id:idArr[i]}); main.show(); }; })(window, mui, $, window.util = {});
相关文章推荐
- IOS 应用内显示 AppStore 某个应用的详情
- 微信支付扫码支付php版
- 解决Android 5.0中出现的错误:Service Intent must be explicit
- Android IPC机制(三)——利用AIDL实现跨进程通信
- NEON在Android中的使用举例【转】
- 用android studio 生成javadoc
- style的使用
- Activity生命周期和启动模式
- Swift 延迟运行代码
- iOS NSTimer 定时器用法总结
- Timer简易使用
- ios页面间跳转方式总结
- Swift 菊花、UIPageControl和UIProgressView
- Android技术——注入技术
- Unity5学习心得-Input<未完待续>
- [置顶] Android6.0动态权限
- android解析xml-用sax解析
- Android Support兼容包详解
- Android的5种数据存储方式概述
- Android应用内存泄露分析、改善经验总结