维护人:戴荔春 (6016)
Window操作相关工具类,包括H5模式下的window,iframe以及plus模式下的webview操作,以及一些便捷方法
工具类需要手动引入才会生效
//其中WindowTools_Core 是路径在sea中对应的别名 var WindowTools = require('WindowTools_Core');
setOption: 设置默认的页面样式
getExtraDataByKey: 获取页面初始化参数,通过传入key,得到对应key的值
createWin: 创建或打开一个新的页面
openWinWithTemplate: 以webview模板优化方式打开页面
preloadTemplate: 在需要使用到 webview优化的页面中,初始化调用这个函数,可以提前创建好模板页面
showWin: 显示一个页面
hideWin: 隐藏一个页面
createSubWins: 生成多个子页面
dbClickExit: 双击返回键退出APP
lockOrientation:锁住屏幕方向
unlockOrientation:解锁屏幕方向
firePageEvent: 触发页面的自定义事件
closeCurrentPage: 关闭当前页面
trigger: 触发事件
getHashParams: 获取url hash值
setUrlHash: 设置url hash值
clearHtml: 去除html标签中的换行符和空格
getWinSize: 得到窗口的宽和高,返回JSON配对
isExternalUrl: url是否属于绝对路径
设置默认的页面样式
// 替换默认设置 WindowTools.setOption(options)
WindowTools里有一个 DefaultStyle,用来控制页面创建显示时的样式,这个函数可以替换默认样式(实际上只有5+的webview才会应用默认样式)
WindowTools中webview的默认style
{ "top": "0px", "bottom": "0px", "scrollIndicator": "none", "scalable": false, "popGesture": "close", "aniShow": "none", "aniHide": "none", "duration": 300, "waiting": { "autoShow": false, "title": "正在打开页面...", "options": { "size": "20px", "padlock": false, "modal": false, "color": "#ffff00", "background": "rgba(0,0,0,0.8)", "loading": { "display": "inline" } } }, "extras": { "acceleration": "auto" } }
里面配置了一些WindowTools的默认样式。
用于控制窗口滚动条样式,可取值: "all":垂直和水平滚动条都显示; "vertical":仅显示垂直滚动条; "horizontal":仅显示水平滚动条; "none":垂直和水平滚动条都不显示。 默认值为"all",即垂直和水平滚动条都显示。 注意:显示滚动条的前提条件是窗口中的内容超过窗口显示的宽或高。
可取值"none":无侧滑返回功能;"close":侧滑返回关闭Webview窗口;"hide":侧滑返回隐藏webview窗口。 仅iOS平台支持。
如果没有指定窗口动画,则使用默认无动画效果“none”。
如果没有指定窗口动画,则使用默认无动画效果“none”。
默认时间为300ms
获取页面初始化参数,通过传入key,得到对应key的值
// 获取初始化参数 var value = WindowTools.getExtraDataByKey(key)
通过传入key值,得到页面key的初始化传值
plus情况为plus.webview.currentWebview.***
h5情况为 window.location.href 中的参数的值
创建或打开一个新的页面
// 新建页面 WindowTools.createWin(id,url,extras, styles, openCallback, closeCallBack);
创建一个新的页面
h5下为用href跳转
plus下为通过5+API新建新的webview(如果已经存在,则变为打开)
例如,打开绝对网络路径: http:***.html
参数设置参考: DefaultStyle
完整的参数设置参考: plus的WebviewStyles
以webview模板优化方式打开页面
//以webview模板优化方式打开页面,前提是要基于框架,并且有模板页面 WindowTools.openWinWithTemplate(id,url,extras, styles, openCallback, closeCallBack);
h5或者ios的情况下,内部使用createWin来创建
plus并且Android的情况下,以Webview模板优化的方式来打开页面。这时候要求使用最新的框架,并且符合对应的目录结构(比如需要存在RayApp.Template.html等)。详情参考 Android Webview优化技巧
推荐使用这种方式(在Android机型上,性能的提升会很明显)
styles.templateOptions = {
title: linkUrl === '测试页面'
};
webview优化时,styles里面的一个子参数
{ "title": "模板页面显示的标题" }
主要作用是用来控制模板header页面的显示,可以通过一些自定义参数,让header页面和目标页面更像,从而过渡更自然
预加载模版页面,webview优化时可以用到
//在需要使用到 webview优化的页面中,初始化调用这个函数,可以提前创建好模板页面 CommonTools.initReady(function(){ //预加载模板页面 WindowTools.preloadTemplate(); });
只有plus且Android下会生效,其它情况相当于一个空函数
如果没有预加载模版页面,那么第一次调用 openWinWithTemplate时,会触发预加载事件,预加载页面。等预加载完毕后,第二次调用才能正常打开页面。
显示一个页面
// 显示页面,plus下可以使用动画样式 WindowTools.showWin(id, aniShow, duration, showedCB, extras);
显示一个页面,使用默认样式,传入参数可以是webview对象或者是webview的id
隐藏一个页面
// 隐藏页面,plus下可以使用动画样式 WindowTools.hideWin(id, aniHide, duration, extras);
显示一个页面,使用默认样式,传入参数可以是webview对象或者是webview的id
生成多个子页面
// 生成子页面 var pagesStr = WindowTools.createSubWins(options, styles, loadedCallback);
生成多个子页面
h5下为生成iframe
h5+下为生成webview
生成子页面的options选项
[ { "url": "url1", "id": "id1", "styles": { "top": "45px", "bottom": "0px", "...":"其它style,参考webview style样式", "其它":"比如是否显示dialog,duration由DefaultStyle控制" }, "extras":{ } }, { "url": "url2", "id": "id2", "styles": { "top": "45px", "bottom": "0px" }, "extras":{ } } ]
数组的每一个item对应一个子页面的style。
styles里面一样可以添加
webview的style
extras里是额外参数
生成子页面的styles选项
{ "isShowFirst": true, "parentDom": "#frameWrap" }
创建子页面时的通用style
双击返回键退出APP
// 双击退出,可以自定义提示语句和间隔时间 WindowTools.dbClickExit(tips, intervalTime);
双击返回键退出APP-仅支持Android平台
一般每个应用的首页会执行这句代码
锁住屏幕方向
//锁住为竖屏 CommonTools.lockOrientation(true);
锁住屏幕方向
可以锁住屏幕为竖屏或者横屏
只在plus下有效
解锁屏幕方向
//解锁屏幕方向 CommonTools.unlockOrientation(true);
解锁屏幕方向
解锁后,屏幕又恢复最初的设置了,比如又可以正常横屏和竖屏切换
只在plus下有效
触发页面的自定义事件
// 触发某个页面的自定义事件 WindowTools.firePageEvent(id, refreshEventName, extras);
plus中,可以触发任意页面的任意自定义事件
h5中,只能触发本页面的事件或者是本页面的子页面的事件
关闭当前页面
// 关闭当前页面 WindowTools.closeCurrentPage();
plus下为使用mui的back,关闭当前页面和子页面
h5下,如果当前页面是open打开的,则关闭整个opener,否则history.back()
触发事件
// 触发事件 WindowTools.trigger(element, eventType, eventData);
通过h5实现触发事件
获取url hash值
// 得到hash值 var hashValue = WindowTools.getHashParams(key);
格式:#key1=val1|key2=val2|key3=val3
设置url hash值
// 设置url hash值 WindowTools.setUrlHash(key,value);
格式:#key=value
设置后会清除以前hash
去除html标签中的换行符和空格
// 去除html标签中的换行符和空格 var html = WindowTools.clearHtml(html);
通过正则表达式,去除html标签中的换行符和空格
得到窗口的宽和高,返回JSON配对
// 获得宽高 var winSize = WindowTools.getWinSize(); var width = winSize.width; var height = winSize.height;
宽和高都是整数
url是否属于外部url
// 判断是否外部 var isExternalUrl = WindowTools.isExternalUrl(url);
判断url是否属于外部url
/^(http|https|ftp|file)/g为外部地址