在app开发中,若要使用HTML5+扩展api,必须等plusready事件发生后才能正常使用,mui将该事件封装成了mui.plusReady()
方法,涉及到HTML5+的api,建议都写在mui.plusReady方法中。以下为打印当前页面URL的示例:html
mui.plusReady(function(){ console.log("当前页面URL:"+plus.webview.currentWebview().getURL()); });
作web app,一个没法避开的问题就是转场动画;web是基于连接构建的,从一个页面点击连接跳转到另外一个页面,若是经过有刷新的打开方式,用户要面对一个空白的页面等待;若是经过无刷新的方式,用Javascript移入DOM节点(常见的SPA解决方案),会碰到很高的性能挑战:DOM节点繁多,页面太大,转场动画不流畅甚至致使浏览器崩溃; mui的解决思路是:单webview只承载单个页面的dom,减小dom层级及页面大小;页面切换使用原生动画,将最耗性能的部分交给原生实现.html5
mui.openWindow({ url:new-page-url, id:new-page-id, styles:{ top:newpage-top-position,//新页面顶部位置
bottom:newage-bottom-position,//新页面底部位置
width:newpage-width,//新页面宽度,默认为100%
height:newpage-height,//新页面高度,默认为100%
...... }, extras:{ .....//自定义扩展参数,能够用来处理页面间传值
}, createNew:false,//是否重复建立一样id的webview,默认为false:不重复建立,直接显示
show:{ autoShow:true,//页面loaded事件发生后自动显示,默认为true
aniShow:animationType,//页面显示动画,默认为”slide-in-right“;
duration:animationTime//页面动画持续时间,Android平台默认100毫秒,iOS平台默认200毫秒;
}, waiting:{ autoShow:true,//自动显示等待框,默认为true
title:'正在加载...',//等待对话框上显示的提示内容
options:{ width:waiting-dialog-widht,//等待框背景区域宽度,默认根据内容自动计算合适宽度
height:waiting-dialog-height,//等待框背景区域高度,默认根据内容自动计算合适高度
...... } } })
参数:web
styles
api
窗口参数,参考5+规范中的WebviewStyle;特别注意,height和width两个属性,即便不设置,也默认按100%计算;所以若设置了top值为非"0px"的状况,建议同时设置bottom值,不然5+ runtime根据高度100%计算,可能会形成页面真实底部位置超出屏幕范围的状况;left、right同理。浏览器
extras
app
新窗口的额外扩展参数,可用来处理页面间传值;例如:框架
var webview = mui.openWindow({ url:'info.html', extras:{ name:'mui' //扩展参数
} }); console.log(webview.name);//输出mui字符串
createNew
dom
是否重复建立相同id的webview;ide
为优化性能、避免app中重复建立webview,mui v1.7.0开始增长createNew参数,默认为false;判断逻辑以下:性能
createNew参数为为true,则不判断重复,每次都新建webview;
createNew参数为为fasle,则先查找当前App中是否已存在一样id的webview,若存在则直接显示;不然新建立并根据show参数执行显示逻辑;
注意:plusReady事件仅在webview首次建立时触发,使用mui.openWindow
方法屡次打开已存在的一样id的webview时,是不会重复触发plusReady事件的; 所以若业务写在plusReady事件中,可能会出现执行结果和预期不一致的状况;此时可经过自定义事件触发; 案例参考:mui.plusReady有时会失效;
show
窗口显示控制参数,具体参数以下:
autoShow:目标窗口loaded事件发生后,是否自动显示,默认为true;若为false,则仅建立但不显示webview;若目标页面为预加载页面,则该参数无效;
aniShow表示页面显示动画,好比从右侧划入、从下侧划入等,具体可参考5+规范中的AnimationTypeShow
duration:显示Webview窗口动画的持续时间,单位为ms
waiting
系统等待框参数
mui框架在打开新页面时等待框的处理逻辑为:
显示等待框-->建立目标页面webview-->目标页面loaded事件发生-->关闭等待框;
所以,只有当新页面为新建立页面(webview)时,会显示等待框,不然若为预加载好的页面,则直接显示目标页面,不会显示等待框。waiting中的具体参数:
autoShow:是否自动显示等待框,默认为true;若为false,则不显示等待框;注意:若waiting框的autoShow为true,但目标页面不自动显示,则需在目标页面中经过以下代码关闭等待框:plus.nativeUI.closeWaiting();
title:等待框上的提示文字
options表示等待框显示参数,好比宽高、背景色、提示文字颜色等,具体可参考5+规范中的WaitingOption
跳转到另外一个页面时,获取前一个页面传递的参数
plus.webview.currentWebview().参数
菜鸟写文章,不喜勿喷,若有错误,请指正。