(function(w){ // 空函数 function shield(){ return false; } document.addEventListener('touchstart',shield,false);//取消浏览器的所有事件,使得active的样式在手机上正常生效 document.oncontextmenu=shield;//屏蔽选择函数 // H5 plus事件处理 var ws=null,as='pop-in'; function plusReady(){ ws=plus.webview.currentWebview(); // Android处理返回键 plus.key.addEventListener('backbutton',function(){ back(); },false); compatibleAdjust(); } if(w.plus){ plusReady(); }else{ document.addEventListener('plusready',plusReady,false); } // DOMContentLoaded事件处理 var domready=false; document.addEventListener('DOMContentLoaded',function(){ domready=true; gInit(); document.body.onselectstart=shield; compatibleAdjust(); },false); // 处理返回事件 w.back=function(hide){ if(w.plus){ ws||(ws=plus.webview.currentWebview()); if(hide||ws.preate){ ws.hide('auto'); }else{ ws.close('auto'); } }else if(history.length>1){ history.back(); }else{ w.close(); } }; // 处理点击事件 var openw=null,waiting=null; /** * 打开新窗口 * @param {URIString} id : 要打开页面url * @param {boolean} wa : 是否显示等待框 * @param {boolean} ns : 是否不自动显示 * @param {JSON} ws : Webview窗口属性 */ w.clicked=function(id,wa,ns,ws){ if(openw){//避免多次打开同一个页面 openw.show(); return null; } if(w.plus){ wa&&(waiting=plus.nativeUI.showWaiting()); ws=ws||{}; ws.scrollIndicator||(ws.scrollIndicator='none'); ws.scalable||(ws.scalable=false); var pre='';//'http://192.168.1.178:8080/h5/'; openw=plus.webview.create(pre+id,id,ws); ns||openw.addEventListener('loaded',function(){//页面加载完成后才显示 // setTimeout(function(){//延后显示可避免低端机上动画时白屏 openw.show(as); closeWaiting(); // },200); },false); openw.addEventListener('close',function(){//页面关闭后可再次打开 openw=null; },false); return openw; }else{ w.open(id); } return null; }; w.openDoc=function(t,c){ var d=plus.webview.getWebviewById('document'); if(d){ d.evalJS('updateDoc("'+t+'","'+c+'")'); }else{ d=plus.webview.create('/plus/doc.html','document',{zindex:9999,popGesture:'hide'},{preate:true}); d.addEventListener('loaded',function(){ d.evalJS('updateDoc("'+t+'","'+c+'")'); },false); } } /** * 关闭等待框 */ w.closeWaiting=function(){ waiting&&waiting.close(); waiting=null; } // 兼容性样式调整 var adjust=false; function compatibleAdjust(){ if(adjust||!w.plus||!domready){ return; } // iOS平台使用滚动的div if('iOS'==plus.os.name){ var t=document.getElementById("dcontent"); t&&(t.className="sdcontent"); t=document.getElementById("content"); t&&(t.className="scontent"); //iOS8横竖屏切换div不更新滚动问题 var lasto=window.orientation; window.addEventListener("orientationchange",function(){ var nowo=window.orientation; if(lasto!=nowo&&(90==nowo||-90==nowo)){ dcontent&&(0==dcontent.scrollTop)&&(dcontent.scrollTop=1); content&&(0==content.scrollTop)&&(content.scrollTop=1); } lasto=nowo; },false); } adjust=true; }; w.compatibleConfirm=function(){ plus.nativeUI.confirm('本OS原生层面不提供该控件,需使用mui框架实现类似效果。请点击“确定”下载Hello mui示例',function(e){ if(0==e.index){ plus.runtime.openURL("http://www.dcloud.io/hellomui/"); } },"",["确定","取消"]); } // 通用元素对象 var _dout_=null,_dcontent_=null; w.gInit=function(){ _dout_=document.getElementById("output"); _dcontent_=document.getElementById("dcontent"); }; // 清空输出内容 w.outClean=function(){ _dout_.innerText=""; _dout_.scrollTop=0;//在iOS8存在不滚动的现象 }; // 输出内容 w.outSet=function(s){ _dout_.innerText=s+"\n"; (0==_dout_.scrollTop)&&(_dout_.scrollTop=1);//在iOS8存在不滚动的现象 }; // 输出行内容 w.outLine=function(s){ _dout_.innerText+=s+"\n"; (0==_dout_.scrollTop)&&(_dout_.scrollTop=1);//在iOS8存在不滚动的现象 }; // 格式化时长字符串,格式为"HH:MM:SS" w.timeToStr=function(ts){ if(isNaN(ts)){ return "--:--:--"; } var h=parseInt(ts/3600); var m=parseInt((ts%3600)/60); var s=parseInt(ts%60); return (ultZeroize(h)+":"+ultZeroize(m)+":"+ultZeroize(s)); }; // 格式化日期时间字符串,格式为"YYYY-MM-DD HH:MM:SS" w.dateToStr=function(d){ return (d.getFullYear()+"-"+ultZeroize(d.getMonth()+1)+"-"+ultZeroize(d.getDate())+" "+ultZeroize(d.getHours())+":"+ultZeroize(d.getMinutes())+":"+ultZeroize(d.getSeconds())); }; /** * zeroize value with length(default is 2). * @param {Object} v * @param {Number} l * @return {String} */ w.ultZeroize=function(v,l){ var z=""; l=l||2; v=String(v); for(var i=0;i