目录
窗口系统
Summer框架实现了基于原生技术的多窗口机制,避免了HTML5中单页应用(SPA)的缺陷,又保留了交互的流畅性。在开发层面,开发人员可以自由的控制窗口的打开、关闭、回调等。多窗口机制从客观上对复杂页面逻辑提供了代码分离机制,将一个复杂的业务场景分离成几个独立模块(Frame),每个模块都有自己的视图(HTML)、业务逻辑(JavaScript),也有自己的数据和存储空间,各Frame之间还可以相互通信,充分体现了代码隔离原则、职责单一原则,同时便于后期的维护和升级。
Window
summer.openWin()
打开window
若 window 已存在,则不会再次打开,如果参数 isreload 为 true 时,页面会刷新,但是该 window 里面已经打开的 frame 等不会移除
若当前正在进行 openWin、closeWin 等带动画过渡的 window 操作,调用此方法会失效
语法:
summer.openWin({params})
参数:
- id:
- 类型:字符串
- 默认值:无
- 描述:(必选项)window 名字,不能为空字符串
- appid:
- 类型:字符串
- 默认值:无
- 描述:子应用标识(子应用的id),用于打开指定子应用
- url:
- 类型:字符串
- 默认值:无
- 描述:页面地址,可以为本地文件路径,支持相对路径和绝对路径,也可以为远程地址即http(s)互联网网址路径
- isKeep:
- 类型:布尔型
- 默认值:true
- 描述:打开一个新win的同时,老的win要不要关闭,默认为true
- create
- 类型:布尔型
- 默认值:true
- 描述:如果设置为true,打开一个新win时,会等页面加载完成才显示,如果设置为false,会保留原生header,直接打开页面,然后再加载页面内容。默认是为ture
- show
- 类型:布尔型
- 默认值:true
- 描述:当create为false时,此时设置show值无效。当create为true时,如果设置show为true,在页面加载完后直接显示,如果设置show为false,则页面不显示,需要手动调用summer.showWin()来显示。默认为true
- pageParam:
- 类型:JSON 对象
- 默认值:无
- 描述:(可选项)页面参数,新页面中可以通过 summer.pageParam 获取
type:
- 类型:字符串
- 默认值:无
- 可选值:externalLink,actionBar,tabbar,speechWin(稍后更新),waveSpeech
- 描述:(可选项)打开Window类型。
实例1:
externalLink:通常用于打开外部链接,链接在跳转到二级以上页面时,导航栏出现关闭按钮。summer.openWin({id : 'otherHome',url : 'http://www.baidu.com',type: "externalLink",//打开外链接,页面跳转二级以上,导航栏出现关闭按钮create: false,title: "自定义title",backText:"返回",//界面上的返回closeText:"关闭",//界面上的关闭closeImage:"img/back_normal.png",// 界面上关闭按钮图片image: "img/back.png", // 在www目录下的图片位置,路径随意放置,返回按钮图片titleColor: "#000000", //标题、返回、关闭的字体颜色,注意必须是6位数的颜色值。(3位数颜色值会不正常)navigationbgColor: "#ffffff" //导航栏 的背景色,注意必须是6位数的颜色值。(3位数颜色值会不正常)});
实例2:
actionBar:用于给新页面添加原生导航栏,便于页面跳转时更流畅,原生导航栏样式由anctionBar对象决定。summer.openWin({id:'otherHome',url:'html/main.html',type: "actionBar",create: false, //设置保留原生headeractionBar: {title: "TA的信息",titleColor: "#333333", //注意必须是6位数的颜色值。(3位数颜色值会不正常)backgroundColor: "#ffffff",bottomLineColor: "#ffffff",leftItem:{image: "img/back.png",method:"", //返回按钮自定义事件,不传方法时默认点击返回后关闭当前页面,也可在打开的window中自定义事件text:"返回按钮文字",textColor:"#000000" //返回文字颜色,注意必须是6位数的颜色值。(3位数颜色值会不正常)},rightItems:[{type:"image",image:"img/back.png",method:"" //在打开的window中自定义事件},{type:"text",text:"文字",textColor:"#333333", //文字颜色,注意必须是6位数的颜色值。(3位数颜色值会不正常)method:"" //在打开的window中自定义事件}]}});
实例3:
tabBar:用于导航栏和tabBar都是原生的情况,可根据theme.json,application.json(暂未开放)文件定制原生的导航栏和tabBar。summer.openWin({id:'otherHome',url:'html/main.html',type: "tabbar",create: false,isKeep: false});
实例4:
waveSpeech:语音助手专用,增加两参数 waveBgColor波浪样式,speechCallback成功回调。注意:必须依赖讯飞插件。summer.openWin({id : "qun",url : "comps/robot/index.html",addBackListener : "true",create : "false",waveBgColor : "#f4f4f4",speechCallback : "succussCallback()",addKeyBoardListener : "addKey()",type : "waveSpeech",actionBar : {title : "沫沫",titleColor : "",backgroundColor : "",leftItem : {image : "",method : "openWaker()"},rightItems : [{type : "image",image : "comps/robot/img/speak.png",method : "changeIcon()"}]},});
- addBackListener:
- 类型:字符串
- 默认值:无
- 描述:(可选项)监听所打开页面的返回键,若值设为”true”,则会去调用所打开页面的keyBack函数(该函数需用户自己定义,函数名必须为keyBack,且必须定义成全局函数,不能定义在summerready中),如果需要关闭页面,可在keyBack函数中调用summer.closeWin()
实例1
实例2//在当前index页面中去打开main页面,则需要在main页面中定义keyBack方法summer.openWin({id:"main",url:"htmlmain.html","addBackListener":"true"});//在main页面中定义全局的keyBack函数function keyBack(){summer.closeWin();}
//打开主页面summer.openWin({id:"main",url:"htmlmain.html","addBackListener":"true"});//在全局的keyBack函数中判断是否连续两次点击返回键,var turn = 0;function keyBack(){turn++;if(turn==2){clearInterval(intervalID);summer.exitApp()}else{summer.toast({"msg":"再点击一次退出!"});}var intervalID = setInterval(function() {clearInterval(intervalID);turn=0;}, 3000);}
- bounces:
- 类型:布尔型
- 默认值:若在 config.xml 里面配置了pageBounce,则默认值为配置的值,否则为 false
- 描述:(可选项)页面是否弹动
- bgColor:
- 类型:字符串
- 默认值:若在 config.xml 里面配置了 windowBackground,则默认值为配置的值,否则透明
- 描述:(可选项)背景色,支持图片和颜色,格式为 #ffffff;(必须是6位)图片路径支持相对路径
- isreload:
- 类型:布尔型
- 默认值:false
- 描述:(可选项)页面已经打开时,是否重新加载页面,重新加载页面后 summerready 方法将会被执行
- windowSoftInputMode:
- 类型:字符串
- 默认值:auto
- 描述:(可选项)当键盘弹出时,输入框被盖住时,当前页面的调整方式,详见键盘弹出页面调整方式常量,config.xml中说明。
- fullScreen:
- 类型:布尔型
- 默认值:false
- 描述:(可选项)打开的window是否全屏显示。如果没有该参数,则默认不全屏。
- statusBarAppearance:
- 类型:布尔型
- 默认值:true
- 描述:(可选项)打开的window是否显示手机的状态条。如果没有该参数,则默认显示状态条。
- 组合:fullScreen和statusBarAppearance的组合
| fullScreen为true | fullScreen为false | |
|---|---|---|
| statusBarAppearance为true | 状态条和导航栏会重叠,需通过summer.fixedStatusBar方法调整导航栏的位置达到正确效果 | 非全屏有状态条 |
| statusBarAppearance为false | 需通过summer.fixStatusBar方法调整导航栏的位置达到正确效果 | 错误用法 |
- statusBarStyle:
- 类型:字符串型
- 默认值:无
- 描述:(可选项)设置打开window的状态条的样式,取值为”light” 或 “dark”。如果没有该参数,则取系统默认值。
- orientation:
- 类型:字符串型
- 默认值: portrait
- 描述:(可选项)设置打开window以横屏或竖屏显示,取值为”landscape”(横屏) 或 “portrait”(竖屏)。如果没有该参数,则取系统默认值。
- useWKWebView:(暂不支持)
- 类型:布尔
- 默认值:false
- 描述:(可选项)是否使用WKWebView来加载页面,只支持iOS8.0及以上系统。WKWebView是iOS8新出的WebKit库中的控件,相比于以前的UIWebView,在性能和功能等方面都有所提升。注意使用WKWebView后,localStorage可能不能和其它未使用WKWebView加载的页面通用。
- scrollToTop:(暂不支持)
- 类型:布尔
- 默认值:false
- 描述:(可选项)当点击状态栏,页面是否滚动到顶部。若当前屏幕上不止一个页面的 scrollToTop 属性为 true,则所有的都不会起作用。只 iOS 有效
- vScrollBarEnabled:
- 类型:布尔
- 默认值:true
- 描述:(可选项)是否显示垂直滚动条
- hScrollBarEnabled:(暂不支持)
- 类型:布尔
- 默认值:true
- 描述:(可选项)是否显示水平滚动条
- scaleEnabled:(暂不支持)
- 类型:布尔
- 默认值:false
- 描述:(可选项)页面是否可以缩放
- slidBackEnabled:(暂不支持)
- 类型:布尔
- 默认值:true
- 描述:(可选项)是否支持滑动返回。iOS7.0及以上系统中,在新打开的页面中向右滑动,可以返回到上一个页面,该字段只 iOS 有效
- slidBackType:(暂不支持)
- 类型:字符串
- 默认值:full
- 描述:(可选项)当支持滑动返回时,设置手指在页面右滑的有效作用区域。取值范围(full:整个页面范围都可以右滑返回,edge:在页面左边缘右滑才可以返回),该字段只iOS有效
- animation:
- 类型:JSON 对象
- 默认值:无
- 描述:(可选项)动画参数,不传时使用默认动画movein,type:动画类型,subType:动画子类型。
- 内部字段:
{type:"none", //动画类型(详见动画类型常量)subType:"from_right", //动画子类型(详见动画子类型常量)duration:300 //动画过渡时间,默认300毫秒}
- 使用范围
openFrame
openWindow
openFrameGroup
closeWin
closeFrame
closeToWin - 动画类型:
打开 window 或打开 widget 时的动画类型,Android 部分动画不支持,字符串类型
取值范围:
none //无动画效果
push //新视图将旧视图推开
movein //新视图移到旧视图上面
fade //交叉淡化过渡(不支持过渡方向)
flip //翻转效果
reveal //将旧视图移开,显示下面的新视图
ripple //滴水效果(不支持过渡方向)
curl //向上翻一页
un_curl //向下翻一页
suck //收缩效果(不支持过渡方向)
cube //立方体翻滚效果
可用性:
iOS系统,Android系统(flip,ripple,curl,un_curl,suck,cube 类型不支持) - 动画子类型:
动画子类型,字符串类型
部分动画如 fade 可能没有过渡方向
取值范围:
from_right //从右边开始动画
from_left //从左边开始动画
from_top //从顶部开始动画
from_bottom //从底部开始动画
可用性:
iOS系统,Android系统(仅限于from_right,from_left)
- progress:(暂不支持)
- 类型:JSON 对象
- 默认值:无
- 描述:(可选项)页面加载进度配置信息,若不传则无加载进度效果
- 内部字段:
{type:"", //加载进度效果类型,默认值为 default,取值范围为 default|page,default 等同于 showProgress 参数效果;为 page 时,进度效果为仿浏览器类型,固定在页面的顶部title:"", //type 为 default 时显示的加载框标题text:"", //type 为 default 时显示的加载框内容color:"" //type 为 page 时进度条的颜色,默认值为 #45C01A,支持#FFFFFF, rgb(255,255,255), rgba(255,255,255,1.0)等格式}
- delay:(暂不支持)
- 类型:数字
- 默认值:0
- 描述:(可选项)window 显示延迟时间,适用于将被打开的 window 中可能需要打开有耗时操作的模块时,可延迟 window 展示到屏幕的时间,保持 UI 的整体性
- allowEdit:(暂不支持)
- 类型:布尔
- 默认值:false
- 描述:(可选项)是否允许长按页面时弹出选择菜单
示例代码:
summer.openWin({id: 'page1',url: 'html/page1.html',pageParam: {name: 'test'}});//在另一个页面(page1.html)中可以通过summer.pageParam.name获取name的值var name = summer.pageParam.name; //pageParam和openWin时的参数key相同
补充说明:
iOS系统,Android系统
summer.closeWin()
关闭指定 window,无参数时候关闭当前 window。
语法:
summer.closeWin({params})
参数:
- id:
- 类型:字符串
- 默认值:无
- 描述:window的id
- animation:(暂不支持)
- 类型:JSON 对象
- 默认值:无
- 描述:(可选项)动画参数,不传时使用默认动画,type:动画类型,subType:动画子类型。
- 注:关闭页面时的动画和打开页面时的动画相反。
- 内部字段:
{type:"fade", //动画类型(详见动画类型常量)subType:"from_right", //动画子类型(详见动画子类型常量)duration:300 //动画过渡时间,默认300毫秒}
示例代码:
summer.closeWin({id: 'root'});
补充说明:
无
summer.closeToWin()
关闭到指定 window,最上面显示的 window 到指定 id 的 window 间的所有 window 都会被关闭。
若当前正在进行 openWin、closeWin 等带动画过渡的 window 操作,调用此方法会失效。
语法:
summer.closeToWin({params})
参数:
- id:
- 类型:字符串
- 默认值:无
- 描述:window的id
- animation:(暂不支持)
- 类型:JSON 对象
- 默认值:无
- 描述:(可选项)动画参数,不传时使用默认动画,type:动画类型,subType:动画子类型。
- 内部字段:
{type:"fade", //动画类型(详见动画类型常量)subType:"from_right", //动画子类型(详见动画子类型常量)duration:300 //动画过渡时间,默认300毫秒}
示例代码:
summer.closeToWin({id: 'root'});
补充说明:
无
summer.createWin()
创建一个window,此方法不会显示window,需要结合summer.showWin()使用
语法:
summer.createWin({params})
参数:
- cache:传值类型为true或false,不传值默认为false,true表示创建隐藏的window在显示之后依然保留,下次可以直接调用showWin来显示,false表示创建window在显示之后被删除,下次显示需要重新调用createWin。
该API其他参数与openWin一致。
示例代码:
summer.createWin({id: 'page1',url: 'html/page1.html',cache:'false'pageParam: {name: 'test'}});
summer.showWin()
显示一个已创建的window(该API与createWin配合使用)
语法:
summer.showWin({params})
参数:
- id:id为已经完成createWin的页面id.
示例代码:
summer.showWin({id: 'page1'});
createWin和showWin建议使用方式:
- cache传值为false,先执行createWin然后在目标页面的summerReady里面调用showWin来显示。(建议在逻辑简单且加载耗时较少的页面使用);
- cache传值为true,提前完成createWin然后在需要显示的时候调用showWin来显示。(此页面只需create一次并会保留该页面关闭时的状态,酌情使用)。
summer.setWinAttr()
设置 window 属性
语法:
summer.setWinAttr({params})
参数:
- actionBar:
- 类型:布尔
- 默认值:无
- 描述:页面原生UI属性
示例代码:
summer.setWinAttr({actionBar: {title: "TA的信息",titleColor: "#333333",backgroundColor: "#ffffff",leftItem:{image: "img/back.png",method:"",//返回按钮自定义事件,不传方法时默认点击返回后关闭当前页面,也可在打开的window中自定义事件text:"返回按钮文字",textColor:"#000000" //返回文字颜色},rightItems:[{type:"image",image:"img/back.png",method:"" //自定义事件},{type:"text",text:"文字",textColor:"#333333",method:"" //自定义事件}]}});
补充说明:
无
可用性:
iOS系统,Android系统
可提供的1.0.0及更高版本
Frame
summer.openFrame()
打开frame
若 frame 已存在,则会把该窗口显示到最前面并显示,如果 url 和之前的 url 有变化,或者 isreload 为 true 时,页面会刷新
此方法对 frameGroup 里面的 frame 不起作用
语法:
summer.openFrame({params})
参数:
- id
- 类型:字符串
- 默认值:无
- 描述:frame 的唯一标示,打开一个已经打开过的id的frame时,表示将该frame显示到当前屏幕
- url:
- 类型:字符串
- 默认值:无
- 描述:页面地址,可以为本地文件路径,支持相对路径和绝对路径,也可以为远程地址,如http(s)网址
- pageParam:
- 类型:JSON 对象
- 默认值:无
- 描述:(可选项)页面参数,在新页面通过 summer.pageParam 获取
- bounces:
- 类型:布尔
- 默认值:若在 config.xml 里面配置了 pageBounce,则默认值为配置的值,否则为 true
- 描述:(可选项)页面是否弹动
- bgColor:
- 类型:字符串
- 默认值:若在 config.xml 里面配置了 frameBackgroundColor,则默认值为配置的值,否则透明
- 描述:(可选项)背景色,支持图片和颜色,格式为#ffffff,图片路径支持支持相对路径
- scrollToTop:
- 类型:布尔
- 默认值:true
- 描述:(可选项)当点击状态栏,页面是否滚动到顶部。若当前屏幕上不止一个页面的 scrollToTop 属性为 true,则所有的都不会起作用。只iOS有效
- vScrollBarEnabled:
- 类型:布尔
- 默认值:true
- 描述:(可选项)是否显示垂直滚动条
- hScrollBarEnabled:
- 类型:布尔
- 默认值:true
- 描述:(可选项)是否显示水平滚动条
- scaleEnabled:
- 类型:布尔
- 默认值:false
- 描述:(可选项)页面是否可以缩放
- rect or position:
- 类型:JSON 对象
- 默认值:如果没有该参数时则新打开的frame充满整个父页面
- 描述:(可选项)frame 的位置和大小,设置 margin 后,在不同手机上面会保持与父页面的各方向边距一致,而中间区域会自动扩充。
- 内部字段:
//用法1:frame为固定大小{left:0, //左上角x坐标,左边距离父win的距离top:0, //左上角y坐标,上边距离父win的距离width:320, //宽度,若传'auto',页面从x位置开始自动充满父页面宽度height:480 //高度,若传'auto',页面从y位置开始自动充满父页面高度}//用法2:frame为宽高为auto,或width、height未指定{left:0, //左上角x坐标,左边距离父win的距离top:44, //左上角y坐标,上边距离父win的距离width:'auto', //宽度,若传'auto',页面从left位置开始自动充满父页面宽度height:'auto' //高度,若传'auto',页面从top位置开始自动充满父页面高度}//或{left:0, //左上角x坐标,左边距离父win的距离top:44, //左上角y坐标,上边距离父win的距离}//用法3:frame为弹性大小,外边距(父win)为固定大小{top:20,buttom:20,left:10,right:10}
- 特别说明:top、buttom、left、right和width、height同时设置时,以top、buttom、left、right为准
最高优先级
top、bottom、left、right
第二优先级
top、left、width、height
top、right、width、height
bottom、left、width、height
bottom、right、width、height
- showProgress:
- 类型:布尔
- 默认值:false
- 描述:(可选项)是否显示等待框,此参数即将废弃,使用 progress 参数代替。若传了 progress 参数,此参数将忽略
- progress:
- 类型:JSON 对象
- 默认值:无
- 描述:(可选项)页面加载进度配置信息,若不传则无加载进度效果
- 内部字段:
{type:"", //加载进度效果类型,默认值为default,取值范围为default|page,default等同showProgress参数效果;为page时,进度效果为仿浏览器类型,固定在页面的顶部title:"", //type为default时显示的加载框标题text:"", //type为default时显示的加载框内容color:"" //type为page时进度条的颜色,默认值为#45C01A,支持#FFFFFF格式}
- isreload:
- 类型:布尔
- 默认值:false
- 描述:(可选项)页面已经打开时,是否重新加载页面
- windowSoftInputMode:
- 类型:字符串
- 默认值:auto
- 描述:(可选项)当键盘弹出时,输入框被盖住时,当前页面的调整方式,详见键盘弹出页面调整方式常量,config.xml中说明。
- animation:(暂不支持)
- 类型:JSON 对象
- 默认值:无
- 描述:(可选项)动画参数,不传时无动画,type:动画类型,subType:动画子类型。
- 内部字段:
具体参见openWin里定义的动画类型、动画子类型{type:"none", //动画类型(详见动画类型常量)subType:"from_right", //动画子类型(详见动画子类型常量) duration:300//动画过渡时间,默认300毫秒}
示例代码:
summer.openFrame({id: 'page2',url: './page2.html',rect: {left: 0,top: 0,width: 320,height: 480},pageParam: {name: 'test'},bounces: true,bgColor: '#e3e3e3',vScrollBarEnabled: true,hScrollBarEnabled: true});
补充说明:
无
可用性:
iOS系统,Android系统
可提供的1.0.0及更高版本
summer.closeFrame()
关闭指定 frame,无参数时候关闭当前 frame。
语法:
summer.closeFrame({params})
参数:
- id:
- 类型:字符串
- 默认值:无
- 描述:frame的id
示例代码:
summer.closeFrame({id: 'root'});
补充说明:
无
summer.setFrameAttr()
设置frame属性
语法:
summer.setFrameAttr({params})
参数:
- id:
- 类型:字符串
- 默认值:无
- 描述:frame 名称
- bounces:
类型:布尔 默认值:无
*描述:(可选项)页面是否弹动 - hidden:
- 类型:布尔
- 默认值:无
- 描述:(可选项)本 frame 是否隐藏(隐藏即从屏幕上移除,但不销毁)
- bgColor:
- 类型:字符串
- 默认值:无
- 描述:(可选项)背景色,支持图片和颜色,格式为#ffffff,图片支持相对路径
- scrollToTop:
- 类型:布尔
- 默认值:无
- 描述:(可选项)当点击状态栏,页面是否滚动到顶部。若当前屏幕上不止一个页面的 scrollToTop 属性为 true,则所有的都不会起作用。只iOS有效
- vScrollBarEnabled:
- 类型:布尔
- 默认值:无
- 描述:(可选项)是否显示垂直滚动条
- hScrollBarEnabled:
- 类型:布尔
- 默认值:无
- 描述:(可选项)是否显示水平滚动条
-scaleEnabled: - 类型:布尔
- 默认值:无
- 描述:(可选项)页面是否可以缩放
- rect:
- 类型:JSON 对象
- 默认值:无
- 描述:(可选项)窗口区域
- 内部字段:
{x:0, //左上角x坐标y:0, //左上角y坐标w:320, //宽度,若传'auto',页面从x位置开始自动充满父页面宽度h:480 //高度,若传'auto',页面从y位置开始自动充满父页面高度}
- softInputMode:
- 类型:字符串
- 默认值:无
- 描述:(可选项)当键盘弹出时,输入框被盖住时,当前页面的调整方式,详见键盘弹出页面调整方式常量;只iOS有效,Android请在 config.xml 里面配置并云编译使用
示例代码:
summer.setFrameAttr({id: 'page2',rect: {x: 0,y: 0,w: 320,h: 480},bounces: true,bgColor: '#ffffff',vScrollBarEnabled: true,hScrollBarEnabled: true});
补充说明:
设置 frame 属性
可用性:
iOS系统,Android系统
可提供的1.0.0及更高版本
summer.openFrameGroup()
打开 frame 组
frame 组打开后,当前页面加载完成后,页面会预加载后面指定个数页面
语法:
summer.openFrameGroup({params}, suceesFn , errFn)
参数:
- id:
- 类型:字符串
- 默认值:无
- 描述:frame 组id
- background:
- 类型:字符串
- 默认值:无
- 描述:(可选项)frame 组背景,颜色(#ffffff(必须为6位),rgba(r,g,b,a))或图片(支持文件路径协议和相对路径)
- scrollEnabled:
- 类型:布尔
- 默认值:true
- 描述:(可选项)frame 组是否能够左右滚动
- position:
- 类型:JSON 对象
- 默认值:充满整个父页面
- 描述:(可选项)frameGroup 的位置和大小,设置 margin 后,在不同手机上面会保持与父页面的各方向边距一致,而中间区域会自动扩充。
- 内部字段:
{left:0, //左上角x坐标top:0, //左上角y坐标width:320, //宽度,若传'auto',页面从x位置开始自动充满父页面宽度height:480, //高度,若传'auto',页面从y位置开始自动充满父页面高度marginLeft:0, //相对父window左外边距的距离marginTop:0, //相对父window上外边距的距离marginBottom:0, //相对父window下外边距的距离marginRight:0 //相对父window右外边距的距离}
- index:
- 类型:数字
- 默认值:0
- 描述:(可选项)默认显示的页面索引
- preload:
- 类型:数字
- 默认值:1
- 描述:(可选项)预加载的 frame 个数,默认加载当前页后面一个
- frames:
- 类型:数组
- 默认值:无
- 描述:frame 数组
- 内部字段
[{id:'', //frame id,字符串类型,不能为空字符串url:'', //页面地址,字符串类型bounces:true, //(可选项)是否弹动,布尔型,默认值:若在 config.xml 里面配置了pageBounce,则默认值为配置的值,否则为falsebgColor:'#ffffff', //(可选项)背景色,支持图片和颜色scrollToTop:true //(可选项)当点击状态栏,页面是否滚动到顶部。若当前屏幕上不止一个页面的scrollToTop属性为true,则所有的都不会起作用。默认值:true。只iOS有效vScrollBarEnabled:true, //(可选项)是否显示垂直滚动条,布尔型,默认值:truehScrollBarEnabled:false, //(可选项)是否显示水平滚动条,布尔型,默认值:falsescaleEnabled:true, //(可选项)页面是否可以缩放,布尔型,默认值:falseallowEdit:false, //(可选项)是否允许长按页面时弹出选择菜单softInputMode:'auto' //(可选项)当键盘弹出时,输入框被盖住时,当前页面的调整方式,参考键盘弹出页面调整方式常量,只iOS有效}]
- callback(ret, err)
- ret:
- 类型:JSON 对象
- 描述:当前显示在屏幕上的 frame 变化时会回调
- 内部字段:
{id:'', //当前 frame idindex:0 //当前 frame 索引}
示例代码:
summer.openFrameGroup({id: 'group1',background: '#ffffff',scrollEnabled: false,position: {top: 0,left: 0,width: 'auto',height: 'auto'},index: 0,frames: [{id: 'frame1',url: 'frame1.html',bgColor: '#ffffff',hidden: true}, {id: 'frame2',url: 'frame2.html',bgColor: '#ffffff',hidden: false}, {id: 'frame3',url: 'frame3.html',bgColor: '#ffffff',hidden: true}],pageParam:[{"frame1":"1"},{"frame2":"2"},{"frame3":"3"}], //(可选项)页面参数,页面中可以通过summer.pageParam获取,JSON对象}, function(ret, err) {var index = ret.index;});//获取参数var firstParam = summer.pageParam[0].frame1; //获取第一个frame的参数,值为1
补充说明:
openFrameGroup的时候默认按照数组的有序顺序打开,数组中最后的frame显示在最上面。
如果frame中设置了hidden属性,则hidden属性的值优先级最高
最后打开的非隐藏frame显示在最上层
可用性:
iOS系统,Android系统
可提供的1.0.0及更高版本
summer.closeFrameGroup()
关闭frame组
语法:
summer.closeFrameGroup({params})
参数:
- name:
- 类型:字符串
- 默认值:无
- 描述:frame 组名字
示例代码:
summer.closeFrameGroup({id: 'group1'});
补充说明:
无
可用性:
iOS系统,Android系统
可提供的1.0.0及更高版本
summer.setFrameGroupAttr()
设置 frameGroup上的属性
注意1:这里的属性是frameGroup本省的属性,而不是组内的单个frame的属性
注意2:Android 6以上版本使用此API时需要手动申请权限,权限申请参考 Summer API -> 应用管理 -> 应用权限 下的 API summer.getPermission()(仅Android)
Android需申请的权限:
语法:
summer.setFrameGroupAttr({params})
参数:
- id:
- 类型:字符串
- 默认值:无
- 描述:frame 组的id
- hidden:
- 类型:布尔
- 默认值:无
- 描述:(可选项)frame 组是否隐藏
- index:
- 类型:整数
- 默认值:无
- 描述:(可选项)组内索引号为index的frame作为当前显示页面
当设置index属性时,等价于setFrameGroupIndex方法
- position:
- 类型:JSON 对象
- 默认值:无
- 描述:(可选项)frame 组区域
- 内部字段:
{left:0, //左上角x坐标top:0, //左上角y坐标width:320, //宽度,若传'auto',frame组从x位置开始自动充满父页面宽度height:240 //高度,若传'auto',frame组从y位置开始自动充满父页面高度}
示例代码1:
//设置整个frameGroup隐藏summer.setFrameGroupAttr({id: 'group1',hidden: true});
示例代码2:
//设置frameGroup内某个frame作为当前显示页显示,可通过组上的index属性来控制//等价于summer.setFrameGroupIndex(),index是frameGroup的一个属性而已summer.setFrameGroupAttr({id: 'group1',index: 2});
补充说明:
无
可用性:
iOS系统,Android系统
可提供的1.0.0及更高版本
summer.setFrameGroupIndex()
设置 frame 组内指定索引号的Frame为当前组的可见frame
语法:
summer.setFrameGroupIndex({params})
参数:
- id:
- 类型:字符串
- 默认值:无
- 描述:frame 组id
- index:
- 类型:数字
- 默认值:无
- 描述:frame 索引
- reload:
- 类型:布尔
- 默认值:false
- 描述:(可选项)是否刷新 frame
示例代码:
//将id为group1的frame组内,index为2的frame显示在屏幕最上面summer.setFrameGroupIndex({id: 'group1',index: 2,reload: false});
补充说明:
无
可用性:
iOS系统,Android系统
可提供的1.0.0及更高版本
summer.bringFrameToFront()(暂不支持)
调整 frame 到前面
当参数里没有to的时候,等价于setFrameGroupAttr方法中升至index为0的情况
语法:
summer.bringFrameToFront({params})
参数:
- from:
- 类型:字符串
- 默认值:无
- 描述:待调整显示顺序的 frame 名字
- to:
- 类型:字符串
- 默认值:无
- 描述:(可选项)frame 名字,不传时调整 from 对应 frame 到最前面,否则调整 from 对应 frame 到此 frame 前面示例代码
示例代码:
//将id为page1的window调整设置到最前面显示出来summer.bringFrameToFront({from: 'page1',});//将id为page1的window调整设置到id为page2的window的前面,//如果page2为调整前显示页,则调整后page1的window则显示出来summer.bringFrameToFront({from: 'page1',to: 'page2'});
补充说明:
调整 frame 到前面
summer.sendFrameToBack()(暂不支持)
调整 frame 到指定的frame的后面
语法:
summer.sendFrameToBack({params})
参数:
- from:
- 类型:字符串
- 默认值:无
- 描述:frame 名字
- to:
- 类型:字符串
- 默认值:无
- 描述:(可选项)frame 名字,不传时调整 from 对应 frame 到最后面,否则调整 from 对应 frame 到此 frame 后面
示例代码:
summer.sendFrameToBack({from: 'page1',to: 'page2'});
补充说明:
调整 frame 到后面
加载刷新
summer.setRefreshHeaderInfo()
显示顶部下拉刷新组件,页面必须设置为弹动。
语法:
summer.setRefreshHeaderInfo({params}, callback(ret))
参数:
- visible:
- 类型:布尔
- 默认值:true
- 描述:(可选项)是否可见
- loadingImg:
- 类型:字符串
- 默认值:旋转箭头图片
- 描述:(可选项)上拉下拉时的图片地址
- bgColor:
- 类型:字符串
- 默认值:rgba(187, 236, 153, 1.0)
- 描述:(可选项)背景颜色
- textColor:
- 类型:字符串
- 默认值:rgba(109, 128, 153, 1.0)
- 描述:(可选项)文本颜色
- textDown:
- 类型:字符串
- 默认值:下拉可以刷新…
- 描述:(可选项)下拉文字描述
- textUp:
- 类型:字符串
- 默认值:松开可以刷新…
- 描述:(可选项)松开时文字描述
- textLoading:
- 类型:字符串
- 默认值:加载中…
- 描述:(可选项)加载状态文字描述
- textTime:
- 类型:字符串
- 默认值:最后更新加日期时间
- 描述:(可选项)更新时间文字描述
- showTime:
- 类型:布尔
- 默认值:true
- 描述:(可选项)是否显示更新时间
- callback(ret)
- 描述:处于下拉刷新状态的回调
示例代码:
summer.setRefreshHeaderInfo({visible: true,loadingImg: 'img/refresh.png',bgColor: '#cccccc',textColor: '#ffffff',textDown: '下拉刷新...',textUp: '松开刷新...',showTime: true}, function(ret, err) {//通常在这里从服务器加载数据,//加载完成后调用summer.refreshHeaderLoadDone()方法恢复组件到默认状态});
补充说明:
下拉刷新
可用性:
iOS系统,Android系统
可提供的1.0.0及更高版本
summer.refreshHeaderLoadDone()
通知顶部下拉刷新数据加载完毕,组件会恢复到默认状态
语法:
summer.refreshHeaderLoadDone()
示例代码:
summer.refreshHeaderLoadDone()
补充说明:
通知顶部刷新数据加载完毕
可用性:
iOS系统,Android系统
summer.setRefreshFooterInfo()
显示顶部上拉刷新组件,页面必须设置为弹动。
语法:
summer.setRefreshFooterInfo({params}, callback(ret))
参数:
- visible:
- 类型:布尔
- 默认值:true
- 描述:(可选项)是否可见
- loadingImg:
- 类型:字符串
- 默认值:旋转箭头图片
- 描述:(可选项)上拉下拉时的图片地址
- bgColor:
- 类型:字符串
- 默认值:rgba(187, 236, 153, 1.0)
- 描述:(可选项)背景颜色
- textColor:
- 类型:字符串
- 默认值:rgba(109, 128, 153, 1.0)
- 描述:(可选项)文本颜色
- textDown:
- 类型:字符串
- 默认值:上拉可以刷新…
- 描述:(可选项)下拉文字描述
- textUp:
- 类型:字符串
- 默认值:松开可以刷新…
- 描述:(可选项)松开时文字描述
- textLoading:
- 类型:字符串
- 默认值:加载中…
- 描述:(可选项)加载状态文字描述
- textTime:
- 类型:字符串
- 默认值:最后更新加日期时间
- 描述:(可选项)更新时间文字描述
- showTime:
- 类型:布尔
- 默认值:true
- 描述:(可选项)是否显示更新时间
- callback(ret)
- 描述:处于下拉刷新状态的回调
示例代码:
summer.setRefreshFooterInfo({visible: true,loadingImg: 'img/refresh.png',bgColor: '#cccccc',textColor: '#ffffff',textDown: '上拉刷新...',textUp: '松开刷新...',showTime: true}, function(ret, err) {//通常在这里从服务器加载数据,//加载完成后调用summer.refreshFooterLoadDone()方法恢复组件到默认状态});
补充说明:
上拉刷新
可用性:
iOS系统,Android系统
可提供的1.0.0及更高版本
summer.refreshFooterLoadDone()
通知顶部上拉刷新数据加载完毕,组件会恢复到默认状态
语法:
summer.refreshFooterLoadDone()
示例代码:
summer.refreshFooterLoadDone()
补充说明:
通知顶部刷新数据加载完毕
可用性:
iOS系统,Android系统
跨页面执行方法
summer.execScript()
在指定 window 或者 frame 中执行脚本,对于 frameGroup 里面的 frame 也有效(如支持frameGroup的情况下);
若 winId 和 frameId 都未指定,则在当前 window 中执行脚本,具体执行逻辑见补充说明。
使用场景:
1、在当前win内,一个frame可以执行其他frame的一个js方法,即frame—>frame
2、在当前win内,一个frame可以调用当前win的一个js方法,即frame—>win
语法:
summer.execScript({params})
参数:
- winId:
- 类型:字符串
- 默认值:无
- 描述:(可选项)window 的id,若要跨 window 执行脚本,该字段必须指定。若没有指定,则表示在当前的win中
- appid:
- 类型:字符串
- 默认值:无
- 描述:子应用标识(子应用的id),打开子应用指定页面时需要此参数
- frameId:
- 类型:字符串
- 默认值:无
- 描述:(可选项)frame名称;若没有该参数,表示执行的脚本在win上
- script:
- 类型:字符串
- 默认值:无
- 描述:js代码
示例代码1:
//在名为winName的window中执行jsfun脚本var jsfun = 'funcGoto();';summer.execScript({winId: 'winName',script: jsfun});//在名为winName的window中找到名为frmName的frame,并在该frame中执行jsfun脚本var jsfun = 'funcGoto();';summer.execScript({winId: 'winId',frameId: 'frmId',script: jsfun});
或
summer.execScript({winId: 'homeFixed',frameId : 'frame1',script : 'myCall('+num+');' //运行时script:'mycall(13810012233)'});//在当前window中找到名为frmId的frame,并在该frame中执行jsfun脚本var jsfun = 'funcGoto();';summer.execScript({frameId: 'frmId',script: jsfun});
示例代码2:(子应用)
//在名为winName的window中执行jsfun脚本var jsfun = 'funcGoto();';summer.execScript({appid: 'moli',winId: 'winName',script: jsfun});//在名为winName的window中找到名为frmName的frame,并在该frame中执行jsfun脚本var jsfun = 'funcGoto();';summer.execScript({appid: 'moli',winId: 'winId',frameId: 'frmId',script: jsfun});
补充说明:
统一处理逻辑为:exec->window->frame
winId参数: 当 id 不传值,或者传空字符串的情况下,execScript 对象为调用 execScript 的window(该 window 可能位于屏幕或者后台),在该 window 中继续 frameId 的逻辑;
当 id 传值且非空字符串,但并未找到名为 id 的 window,则直接返回不处理(不论 frameId是否有值);若找到了对应的 window,则在该 window 中继续 frameName 的逻辑;
frameId 参数: 当 frameId 不传值,或者传空字符串的情况下,execScript 对象为调用 execScript 的 window(该 window 可能位于屏幕或者后台),在该 window 中执行 script; 当 frameId 传值且非空字符串,但并未找到名为 frameId 的 frame,则直接返回不处理。若找到了该 frame,则在该 frame 中执行 script。
可用性:
iOS系统,Android系统
启动图控制
summer.hideLaunch()
页面加载完成之后,用于控制启动图隐藏。
注:
前提需要在config.xml文件中配置autoHideLaunch属性,否则是系统自动控制启动隐藏。
<autoHideLaunch>false</autoHideLaunch>
语法:
summer.hideLaunch();
初始化窗口
summer.initializeWin()
初始化窗口,用于打开深层级的页面后,关闭中间多级页面,同时初始化新页面。
注意:
对于android:关闭当前页面到toId指定页面间的所有页面。
对于ios:关闭除当前指定id页面外的所有页面。(toId参数对于ios无效)
语法:
summer.initializeWin({id: '',url: '',toId: ''})
参数:
- id:
- 类型:字符串
- 默认值:无
- 描述:(可选项)window 的id,若要跨 window 执行脚本,该字段必须指定。若没有指定,则表示在当前的win中
- url:
- 类型:字符串
- 默认值:无
- 描述:(必选)需要初始化窗口的文件路径
- toId:
- 类型:字符串
- 默认值:无
- 描述:(必选)需要关闭到相应window的id。仅android有效
示例代码:
summer.initializeWin({id: 'login',url: 'comps/login/index.html',toId: 'homePage'});
Moli专属
summer.setTabbarIndex()
切换Moli中原生Tabbar索引页,用于切换Tabbar页签
语法:
summer.setTabbarIndex({index: 2,isreload: false}, function(){}, function(){})
参数:
- index:
- 类型:整数
- 默认值:无
- 描述:表示Tabbar的索引号,从0开始计数;如:切换到第二个页签,index的值为1
- isreload:
- 类型:布尔,可选
- 默认值:false
- 描述:表示对新打开的页面是否重新加载,true:重新加载,false:不重新加载
示例代码:
summer.setTabbarIndex({index: 1,isreload: false}, function(ret){console.log(ret);}, function(err){console.log(err);});