npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

etccb-utils

v2.1.10

Published

前端工具库

Readme

简介

前端工具库

安装

npm方式

   //两种方式
   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)

CDN 方式

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
</head>
<body>
  <div class="app active"></div>
</body>
<!--引入工具库-->
  <script src="https://unpkg.com/etccb-utils/dist/index.js"></script>
  <script>
    window.onload=function(){
      let etccb = etccb.default;
      let el=document.querySelector(".app")
      let flag=etccb.hasClass(el,'active')
      console.log(flag)
    }
  </script>
</html>

版本更新

  • 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

目录

api 详细文档

基础函数

  • createUUID()

生成36位UUID

2.0.0引入

例子
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 值

例子
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函数,需要在退出当前页面之前调用)

例子
//阻止
etccb.stopHistoryBack(()=>{
  //do sth
});

//恢复
etccb.stopHistoryBack();

返回目录>>

  • getMonitorParams(eventId, eventType, extra)

获取监听接口参数

2.0.9引入

参数 | 类型 | 必填 | 说明 ---|---|---|--- eventId | String | 是 | 事件ID eventType | Number | 否 | 事件类型:1:页面访问,2:行为事件,默认为1 extra | Json Object | 否 | 额外数据

例子
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 }

例子
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

例子
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进行编码

例子
etccb.cmd.openWithApp('http://etccbao.com',"ET前端");
//或
etccb.cmd.openWithApp('http://etccbao.com',"ET前端",1);

返回目录>>

  • closeWebView()

关闭 webview

引入版本 1.0.0

例子
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

例子
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 类名

例子
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类名

例子
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

例子
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 类名

例子
let el=document.querySelector(".app");
etccb.dom.removeClass(el,"my-class-name");

返回目录>>


cookie

  • getCookie(name)

获取cookie

1.0.0引入

参数 | 类型 | 必填 | 说明 ---|---|---|--- name | String | 是 | cookie名称

例子
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:'/'}

例子
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名称

例子
etccb.cookie.removeCookie("token");

返回目录>>


URL

  • getPostfix()

截取当前host有没有后缀,如-dev 、-test等,1.0.0版本是getPrefix()

2.0.0引入

例子
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解码

例子
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参数名称

例子
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(不填)不添加参数或删除当前参数,其他情况都会新增参数

例子
//新增
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

例子
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引入

例子
//当前域名: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引入

例子
etccb.ua.isAndroid();// => true/false
返回 Boolean

返回目录>>

  • isChebao()

是否为车宝环境

1.0.0引入

例子
etccb.ua.isChebao();// => true/false
返回 Boolean

返回目录>>

  • isIos()

是否为IOS浏览器环境

1.0.0引入

例子
etccb.ua.isIos();// => true/false
返回 Boolean

返回目录>>

  • isIphoneX()

是否为iphoneX 浏览器环境

1.0.0引入

例子
etccb.ua.isIphoneX()// => true/false
返回 Boolean

返回目录>>

  • isWeixin()

是否为微信浏览器环境

1.0.0引入

例子
etccb.ua.isWeixin()// => true/false
返回 Boolean

返回目录>>