简介
前端工具库
安装
$3
``
//两种方式
npm install etccb-utils --save
或
yarn add etccb-utils
//引入使用
import etccb from "etccb-utils"
或
let etcb=require("etccb-utils").default
let el=document.querySelector(".app")
let flag=etccb.hasClass(el,'active')
console.log(flag)
`
$3
`
`
$3
- 2.0.0 (当前)
- 1.x.x中版本更新指令:npm install etccb-utils@^1.0.0 --save
- 1.0.x小版本更新指令:npm install etccb-utils@~1.0.0 --save
目录
- polyfill
- [String.prototype.padStart(targetLength \[, padString\])](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/padStart)
- etccb
- createUUID()
- isGEVersion(target, source)
- stopHistoryBack(resume)
- getMonitorParams(eventId, eventType, extra)
- cmd
- closeWebView()
- goToApp(cmd, param)
- goToAppStr(cmd_str)
- openWithApp(url, title, isEncoding)
- cookie
- getCookie(name)
- removeCookie(name)
- setCookie(name, value, time = 365, options)
- date
- formatDate(date, formatStr)
- dom
- addClass(ele, cls)
- hasClass(ele, cls)
- loadFile(url, type)
- removeClass(ele, cls)
- url
- getPostfix()
- queryHashString(key)
- queryString(key)
- setParam(url, key, value)
- setParams(url, data)
- getSLD()
- ua
- isAndroid()
- isChebao()
- isIos()
- isIphoneX()
- isWeixin()
api 详细文档
基础函数
- ### createUUID()
> 生成36位UUID
2.0.0引入
##### 例子
`
js
etccb.createUUID();// => 4e0b9c2b-b570-4e08-8411-28962e57094f
`
##### 返回
String
返回目录>>
- ### isGEVersion(target, source)
> 判断当前版本是否大于等于目标版本,source >= target//true,GE = Greater Equal
1.0.0引入isEqualEqVersion
2.0.0版本改名为isGEVersion
参数 | 类型 | 必填 | 说明
---|---|---|---
target | String | 是 | 目标版本
source | String | 否 | 要对比的版本,非必填,默认取URL或cookies的clientVersion 值
##### 例子
`
js
etccb.isGEVersion("3.2.0");// => 当前版本是3.2.0以下为true
etccb.isGEVersion("3.2.0","1.0.0");// => false
etccb.isGEVersion("3.2.0","4.0.0");// => true
`
##### 返回
是否大于等于某版本,Boolean
返回目录>>
- ### stopHistoryBack(resume)
> 阻止历史返回,主流浏览器通用
2.0.0引入
参数 | 类型 | 必填 | 说明
---|---|---|---
cb | Function/undefined | 否 | 回调函数,为空时可恢复(安卓需要恢复onpopstate函数,需要在退出当前页面之前调用)
##### 例子
`
js
//阻止
etccb.stopHistoryBack(()=>{
//do sth
});
//恢复
etccb.stopHistoryBack();
`
返回目录>>
- ### getMonitorParams(eventId, eventType, extra)
> 获取监听接口参数
2.0.9引入
参数 | 类型 | 必填 | 说明
---|---|---|---
eventId | String | 是 | 事件ID
eventType | Number | 否 | 事件类型:1:页面访问,2:行为事件,默认为1
extra | Json Object | 否 | 额外数据
##### 例子
`
js
let params = getMonitorParams('Event_1');
let params = getMonitorParams('Event_2', 2);
let params = getMonitorParams('Event_2', 2, {text: '点击'});
//返回结果
{
"model": "unknown",//设备(H5是unknown)
"ds": "1125*2436",//屏幕长宽
"loc": "",//定位(H5是空值)
"event_type": 1,//事件类型:1:页面访问,2:行为事件
"etcos": 2,//操作系统,1:安卓,2:IOS
"version": "3.0.0",//优先获取链接的clientVersion,其次是cookie的clientVersion
"token": "",//优先获取链接的token,其次是cookie的token
"url": "",//当前URL
"event_name": "Event_1",//事件ID
"ua": "",//navigator.userAgent
"distinct_id": "XXXXXXXX-XXXX",//APP内获取url或cookie的distinct_id,APP外自动生成UUID存入cookie中
"nfc_type": "",//NFC类型(H5是空值)
"source": 3,//来源,number,3:APP内部H5,4:APP外部H5
"extra": "{text:'点击'}"
}
`
返回目录>>
CMD
- ### goToApp(cmd,param)
> 执行指令
1.0.0引入
参数 | 类型 | 必填 | 说明
---|---|---|---
cmd | String | 是 | 指令名称(更多指令请参考wiki)
如:openWithApp
param | JSON Object | 否 | 参数,默认-1
如:{ url:'http://baidu.com',title:'ET前端',isEncoding:0 }
##### 例子
`
js
etccb.cmd.goToApp("closeWebView");
// 或
etccb.cmd.goToApp("openWithApp",{
url:'http://baidu.com',
title:'百度',
isEncoding:0
})
`
返回目录>>
- ### goToAppStr(cmd_str)
> 执行指令(字符串模式)
2.0.0引入
参数 | 类型 | 必填 | 说明
---|---|---|---
cmd_str | String | 是 | 字符串指令
格式1:jumpCmd==cmd:params
格式2:cmd:params
##### 例子
`
js
etccb.cmd.goToAppStr("jumpCmd==openWithApp:title==='ET前端'");
etccb.cmd.goToAppStr("openWithApp:title==='ET前端'");
etccb.cmd.goToAppStr("closeWebView:-1");
`
返回目录>>
- ### openWithApp(url, title, isEncoding)
> 打开一个新的webview
1.0.0引入
参数 | 类型 | 必填 | 说明
---|---|---|---
url | String | 是 | 打开的页面地址
title | String | 否 | 打开页面的标题
isEncoding | Number | 否 | APP是否需要对“url”参数编码,1表示编码 0表示不编码
注:如果传1,url不会在H5进行编码
##### 例子
`
js
etccb.cmd.openWithApp('http://etccbao.com',"ET前端");
//或
etccb.cmd.openWithApp('http://etccbao.com',"ET前端",1);
`
返回目录>>
- ### closeWebView()
> 关闭 webview
引入版本 1.0.0
##### 例子
`
js
etccb.cmd.closeWebView();
`
返回目录>>
---
date
- ### formatDate(date,formatStr)
> 日期时间格式化
1.0.0引入
参数 | 类型 | 必填 | 说明
---|---|---|---
date | Date/timestamp/String | 是 | 需要传入时间
如:new Date()/1483326245000/'2019-06-28'
formatStr | String | 是 | 输出格式(请注意大小写)
如:yyyy-MM-dd
#### 日期格式
格式 | 说明 | 备注 | 举例
---|---|---|---
yyyy | 年 | | 2017
M |月| 不补0| 1
MM |月 | 补0 | 01
W |周| 仅周选择器的 format 可用;不补0 | 1
WW | 周 |仅周选择器的 format 可用 | 01
d |日 | 不补0 |2
dd | 日 | 补0 | 02
H |小时 | 24小时制;不补0| 3
HH | 小时 | 24小时制 |03
h |小时| 12小时制,须和 A 或 a 使用;不补0 |3
hh | 小时 | 12小时制,须和 A 或 a 使用 |03
m| 分钟 | 不补0 |4
mm | 分钟 | 补0 | 04
s |秒| 不补0 |5
ss | 秒 | 补0 |05
##### 例子
`
js
etccb.date.formatDate(new Date(),'yyyy-MM-dd');// => 2019-06-28
etccb.date.formatDate(new Date(),'yyyy-MM-dd hh:mm:ss');// => 2019-06-28 01:02:03
etccb.date.formatDate("2019-06-28",'yyyy-MM-dd');// => 2019-06-28
etccb.date.formatDate(1483326245000,'yyyy-MM-dd');// => 2019-06-28
`
##### 返回
格式化后的时间格式 String
返回目录>>
---
dom
- ### addClass(ele,cls)
> 给dom元素添加class
1.0.0引入
参数 | 类型 | 必填 | 说明
---|---|---|---
ele | Object | 是 | 需要处理dom对象
cls | String | 是 | 需要添加处理的class 类名
##### 例子
`
js
let el=document.querySelector(".app");
etccb.dom.addClass(el,"my-class-name");
`
返回目录>>
- ### hasClass(ele,cls)
> 判断dom元素是否有class
1.0.0引入
参数 | 类型 | 必填 | 说明
---|---|---|---
ele | Object | 是 | dom对象
cls | String | 是 | class类名
##### 例子
`
js
let el=document.querySelector(".app");
etccb.dom.hasClass(el,"my-class-name");// => true/false
`
##### 返回
Boolean
返回目录>>
- ### loadFile(url, type)
> 加载js或css
2.0.2引入
参数 | 类型 | 必填 | 说明
---|---|---|---
url | String | 是 | 链接
type | String | 否 | 加载类型,js/css,默认js
##### 例子
`
js
etccb.loadFile('xxx.com/h5.js').then((readyState)=>{
console.log(readyState);
});
etccb.loadFile('xxx.com/h5.js','js').then((readyState)=>{
console.log(readyState);
});
etccb.loadFile('xxx.com/h5.css','css').then((readyState)=>{
console.log(readyState);
});
`
##### 返回
Promise
返回目录>>
- ### removeClass(ele,cls)
> 移除dom元素的class
1.0.0引入
参数 | 类型 | 必填 | 说明
---|---|---|---
ele | Object | 是 | 需要处理dom对象
cls | String | 是 | 需要移除处理的class 类名
##### 例子
`
js
let el=document.querySelector(".app");
etccb.dom.removeClass(el,"my-class-name");
`
返回目录>>
---
cookie
- ### getCookie(name)
> 获取cookie
1.0.0引入
参数 | 类型 | 必填 | 说明
---|---|---|---
name | String | 是 | cookie名称
##### 例子
`
js
etccb.cookie.getCookie("token");// => 1a2b3c1d2e3f1a2b3c1d2e3f
`
##### 返回
token字符串,String
返回目录>>
- ### setCookie(name, value, time)
> 设置cookie
1.0.0引入
2.0.0调整参数
2.1.10 domain默认值为当前二级域名
参数 | 类型 | 必填 | 说明
---|---|---|---
name | String | 是 | cookie名称
value | String | 是 | cookie的值
time | Number | 否 | 过期天数 (默认365天)
options | JSON Object | 否 | 其他选项(2.0.0)
默认:{domain:【当前二级域名】,path:'/'}
##### 例子
`
js
etccb.cookie.setCookie("token","123456xxx",3);
//2.0.0支持
etccb.cookie.setCookie("token","123456xxx",3, {domain:'xxx.cn',path:'/demo'});
`
返回目录>>
- ### removeCookie(name)
> 移除cookie
1.0.0引入
参数 | 类型 | 必填 | 说明
---|---|---|---
name | String | 是 | 需要移除的cookie名称
##### 例子
`
js
etccb.cookie.removeCookie("token");
`
返回目录>>
---
URL
- ### getPostfix()
> 截取当前host有没有后缀,如-dev 、-test等,1.0.0版本是getPrefix()
2.0.0引入
##### 例子
`
js
console.log(etccb.url.getPostfix())// => '-test'
`
##### 返回
host后缀,String,如-dev 、-test
返回目录>>
- ### queryString(key,isDecode)
> 获取url 参数
1.0.0引入
参数 | 类型 | 必填 | 说明
---|---|---|---
key | String | 是 | url参数名称
isDecode | Boolean | 否 | 是否需要decode解码,默认false,也支持number类型,0不解码,1解码
##### 例子
`
js
etccb.url.queryString("version");// => 3.0
etccb.url.queryString("backUrl");// => https%3A%2F%2Fwww.xxx.com
etccb.url.queryString("backUrl",1);// => https://www.xxx.com
`
##### 返回
url参数的值,String
返回目录>>
- ### queryHashString(key)
> 获取url的hash参数
1.0.0引入
参数 | 类型 | 必填 | 说明
---|---|---|---
key | String | 是 | url的hash参数名称
##### 例子
`
js
etccb.url.queryHashString("version");// => 3.0
`
##### 返回
url的hash参数值,String
返回目录>>
- ### setParam(url, key, value)
> 设置url的参数
2.0.0引入
参数 | 类型 | 必填 | 说明
---|---|---|---
url | String | 是 | url字符串(不需要encode)
key | String | 是 | 参数名
value | String | 否 | 值,null/undefined(不填)不添加参数或删除当前参数,其他情况都会新增参数
##### 例子
`
js
//新增
etccb.url.setParam("a.com","b","1");// => a.com?b=1
etccb.url.setParam("a.com?c=1","b",false);// => a.com?c=1&b=false
etccb.url.setParam("a.com?c=1","b","2");// => a.com?c=1&b=2
etccb.url.setParam("a.com?c=1","b",0);// => a.com?c=1&b=0
etccb.url.setParam("a.com?c=1","b","");// => a.com?c=1&b=
//替换
etccb.url.setParam("a.com?b=1","b","2");// => a.com?b=2
//删除
etccb.url.setParam("a.com?b=1","b",null);// => a.com
etccb.url.setParam("a.com?b=1","b",undefined);// => a.com
etccb.url.setParam("a.com?b=1","b");// => a.com
//不添加
etccb.url.setParam("a.com?c=1","b",null);// => a.com?c=1
etccb.url.setParam("a.com?c=1","b",undefined);// => a.com?c=1
etccb.url.setParam("a.com?c=1","b");// => a.com?c=1
`
##### 返回
拼接后的url
返回目录>>
- ### setParams(url, data)
> 批量设置url的参数
2.0.0引入
参数 | 类型 | 必填 | 说明
---|---|---|---
url | String | 是 | url字符串(不需要encode)
data | Json Object | 是 | 值对象,仅支持只有一级的json
##### 例子
`
js
etccb.url.setParams("a.com",{b:1,c:2});// => a.com?b=1&c=2,其他情况参考setParam函数
`
##### 返回
拼接后的url
返回目录>>
- ### getSLD()
> 获取二级域名,SLD = Second-level domain
2.1.7引入
##### 例子
`
js
//当前域名:localhost
etccb.url.getSLD();// => xxx
//当前域名:127.0.0.1
etccb.url.getSLD();// => xxx
//当前域名:vip.xxx.com
etccb.url.getSLD();// => xxx
//当前域名:vip-test.xxx.com
etccb.url.getSLD();// => xxx
//当前域名:api.card.xxx.com
etccb.url.getSLD();// => xxx
`
##### 返回
拼接后的url
返回目录>>
---
user-agent 浏览器标识
- ### isAndroid()
> 是否为安卓浏览器环境
1.0.0引入
##### 例子
`
js
etccb.ua.isAndroid();// => true/false
`
##### 返回 Boolean
返回目录>>
- ### isChebao()
> 是否为车宝环境
1.0.0引入
##### 例子
`
js
etccb.ua.isChebao();// => true/false
`
##### 返回 Boolean
返回目录>>
- ### isIos()
> 是否为IOS浏览器环境
1.0.0引入
##### 例子
`
js
etccb.ua.isIos();// => true/false
`
##### 返回 Boolean
返回目录>>
- ### isIphoneX()
> 是否为iphoneX 浏览器环境
1.0.0引入
##### 例子
`
js
etccb.ua.isIphoneX()// => true/false
`
##### 返回 Boolean
返回目录>>
- ### isWeixin()
> 是否为微信浏览器环境
1.0.0引入
##### 例子
`
js
etccb.ua.isWeixin()// => true/false
``
##### 返回 Boolean
返回目录>>