目录
窗口系统
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, //设置保留原生header
actionBar: {
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,则默认值为配置的值,否则为false
bgColor:'#ffffff', //(可选项)背景色,支持图片和颜色
scrollToTop:true //(可选项)当点击状态栏,页面是否滚动到顶部。若当前屏幕上不止一个页面的scrollToTop属性为true,则所有的都不会起作用。默认值:true。只iOS有效
vScrollBarEnabled:true, //(可选项)是否显示垂直滚动条,布尔型,默认值:true
hScrollBarEnabled:false, //(可选项)是否显示水平滚动条,布尔型,默认值:false
scaleEnabled:true, //(可选项)页面是否可以缩放,布尔型,默认值:false
allowEdit:false, //(可选项)是否允许长按页面时弹出选择菜单
softInputMode:'auto' //(可选项)当键盘弹出时,输入框被盖住时,当前页面的调整方式,参考键盘弹出页面调整方式常量,只iOS有效
}]
- callback(ret, err)
- ret:
- 类型:JSON 对象
- 描述:当前显示在屏幕上的 frame 变化时会回调
- 内部字段:
{
id:'', //当前 frame id
index: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);
});