(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){//避免多次打开同一个页面
|
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<l-v.length;i++){
|
z+="0";
|
}
|
return z+v;
|
};
|
})(window);
|