JavaScript 和 CSS 常用工具方法封装

发表于:2019-3-15 10:20

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:周小肆    来源:segmentfault

分享:
  因为工作中经常用到这些方法,所有便把这些方法进行了总结。
  1. type 类型判断
   isString (o) { //是否字符串
  return Object.prototype.toString.call(o).slice(8, -1) === 'String'
  }
  isNumber (o) { //是否数字
  return Object.prototype.toString.call(o).slice(8, -1) === 'Number'
  }
  isBoolean (o) { //是否boolean
  return Object.prototype.toString.call(o).slice(8, -1) === 'Boolean'
  }
  isFunction (o) { //是否函数
  return Object.prototype.toString.call(o).slice(8, -1) === 'Function'
  }
  isNull (o) { //是否为null
  return Object.prototype.toString.call(o).slice(8, -1) === 'Null'
  }
  isUndefined (o) { //是否undefined
  return Object.prototype.toString.call(o).slice(8, -1) === 'Undefined'
  }
  isObj (o) { //是否对象
  return Object.prototype.toString.call(o).slice(8, -1) === 'Object'
  }
  isArray (o) { //是否数组
  return Object.prototype.toString.call(o).slice(8, -1) === 'Array'
  }
  isDate (o) { //是否时间
  return Object.prototype.toString.call(o).slice(8, -1) === 'Date'
  }
  isRegExp (o) { //是否正则
  return Object.prototype.toString.call(o).slice(8, -1) === 'RegExp'
  }
  isError (o) { //是否错误对象
  return Object.prototype.toString.call(o).slice(8, -1) === 'Error'
  }
  isSymbol (o) { //是否Symbol函数
  return Object.prototype.toString.call(o).slice(8, -1) === 'Symbol'
  }
  isPromise (o) { //是否Promise对象
  return Object.prototype.toString.call(o).slice(8, -1) === 'Promise'
  }
  isSet (o) { //是否Set对象
  return Object.prototype.toString.call(o).slice(8, -1) === 'Set'
  }
  isFalse (o) {
  if (!o || o === 'null' || o === 'undefined' || o === 'false' || o === 'NaN') return true
  return false
  }
  isTrue (o) {
  return !this.isFalse(o)
  }
  isIos () {
  var u = navigator.userAgent;
  if (u.indexOf('Android') > -1 || u.indexOf('Linux') > -1) {//安卓手机
  // return "Android";
  return false
  } else if (u.indexOf('iPhone') > -1) {//苹果手机
  // return "iPhone";
  return true
  } else if (u.indexOf('iPad') > -1) {//iPad
  // return "iPad";
  return false
  } else if (u.indexOf('Windows Phone') > -1) {//winphone手机
  // return "Windows Phone";
  return false
  }else{
  return false
  }
  }
  isPC () { //是否为PC端
  var userAgentInfo = navigator.userAgent;
  var Agents = ["Android", "iPhone",
  "SymbianOS", "Windows Phone",
  "iPad", "iPod"];
  var flag = true;
  for (var v = 0; v < Agents.length; v++) {
  if (userAgentInfo.indexOf(Agents[v]) > 0) {
  flag = false;
  break;
  }
  }
  return flag;
  }
  browserType(){
  var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串
  var isOpera = userAgent.indexOf("Opera") > -1; //判断是否Opera浏览器
  var isIE = userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1 && !isOpera; //判断是否IE浏览器
  var isIE11 = userAgent.indexOf('Trident') > -1 && userAgent.indexOf("rv:11.0") > -1;
  var isEdge = userAgent.indexOf("Edge") > -1 && !isIE; //判断是否IE的Edge浏览器
  var isFF = userAgent.indexOf("Firefox") > -1; //判断是否Firefox浏览器
  var isSafari = userAgent.indexOf("Safari") > -1 && userAgent.indexOf("Chrome") == -1; //判断是否Safari浏览器
  var isChrome = userAgent.indexOf("Chrome") > -1 && userAgent.indexOf("Safari") > -1; //判断Chrome浏览器
  if (isIE) {
  var reIE = new RegExp("MSIE (\\d+\\.\\d+);");
  reIE.test(userAgent);
  var fIEVersion = parseFloat(RegExp["$1"]);
  if(fIEVersion == 7) return "IE7"
  else if(fIEVersion == 8) return "IE8";
  else if(fIEVersion == 9) return "IE9";
  else if(fIEVersion == 10) return "IE10";
  else return "IE7以下"//IE版本过低
  }
  if (isIE11) return 'IE11';
  if (isEdge) return "Edge";
  if (isFF) return "FF";
  if (isOpera) return "Opera";
  if (isSafari) return "Safari";
  if (isChrome) return "Chrome";
  }
  checkStr (str, type) {
  switch (type) {
  case 'phone':   //手机号码
  return /^1[3|4|5|6|7|8|9][0-9]{9}$/.test(str);
  case 'tel':     //座机
  return /^(0\d{2,3}-\d{7,8})(-\d{1,4})?$/.test(str);
  case 'card':    //身份证
  return /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(str);
  case 'pwd':     //密码以字母开头,长度在6~18之间,只能包含字母、数字和下划线
  return /^[a-zA-Z]\w{5,17}$/.test(str)
  case 'postal':  //邮政编码
  return /[1-9]\d{5}(?!\d)/.test(str);
  case 'QQ':      //QQ号
  return /^[1-9][0-9]{4,9}$/.test(str);
  case 'email':   //邮箱
  return /^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/.test(str);
  case 'money':   //金额(小数点2位)
  return /^\d*(?:\.\d{0,2})?$/.test(str);
  case 'URL':     //网址
  return /(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?/.test(str)
  case 'IP':      //IP
  return /((?:(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d))/.test(str);
  case 'date':    //日期时间
  return /^(\d{4})\-(\d{2})\-(\d{2}) (\d{2})(?:\:\d{2}|:(\d{2}):(\d{2}))$/.test(str) || /^(\d{4})\-(\d{2})\-(\d{2})$/.test(str)
  case 'number':  //数字
  return /^[0-9]$/.test(str);
  case 'english': //英文
  return /^[a-zA-Z]+$/.test(str);
  case 'chinese': //中文
  return /^[\u4E00-\u9FA5]+$/.test(str);
  case 'lower':   //小写
  return /^[a-z]+$/.test(str);
  case 'upper':   //大写
  return /^[A-Z]+$/.test(str);
  case 'HTML':    //HTML标记
  return /<("[^"]*"|'[^']*'|[^'">])*>/.test(str);
  default:
  return true;
  }
  // 严格的身份证校验
  isCardID(sId) {
  if (!/(^\d{15}$)|(^\d{17}(\d|X|x)$)/.test(sId)) {
  alert('你输入的身份证长度或格式错误')
  return false
  }
  //身份证城市
  var aCity={11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙江",31:"上海",32:"江苏",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南",42:"湖北",43:"湖南",44:"广东",45:"广西",46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",54:"西藏",61:"陕西",62:"甘肃",63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外"};
  if(!aCity[parseInt(sId.substr(0,2))]) {
  alert('你的身份证地区非法')
  return false
  }
  // 出生日期验证
  var sBirthday=(sId.substr(6,4)+"-"+Number(sId.substr(10,2))+"-"+Number(sId.substr(12,2))).replace(/-/g,"/"),
  d = new Date(sBirthday)
  if(sBirthday != (d.getFullYear()+"/"+ (d.getMonth()+1) + "/" + d.getDate())) {
  alert('身份证上的出生日期非法')
  return false
  }
  // 身份证号码校验
  var sum = 0,
  weights =  [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2],
  codes = "10X98765432"
  for (var i = 0; i < sId.length - 1; i++) {
  sum += sId[i] * weights[i];
  }
  var last = codes[sum % 11]; //计算出来的最后一位身份证号码
  if (sId[sId.length-1] != last) {
  alert('你输入的身份证号非法')
  return false
  }
  return true
  }
  }
 
        上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号