资讯专栏INFORMATION COLUMN

JS常用代码

Shimmer / 2636人阅读

摘要:通信移动端打电话移动端发送短信终端或者浏览器终端正则手机号码电子邮箱删除表情获取用户地理位置错误代码用户不允许地理定位无法获取当前位置操作超时未知错误数组去重调用使用

JS -- 通信

1、移动端打电话

window.location.href = ("tel:" + phone);

2、移动端发送短信--Android、iOS

var u = navigator.userAgent, app = navigator.appVersion;
var isAndroid = u.indexOf("Android") > -1 || u.indexOf("Linux") > -1; // android终端或者uc浏览器
var isiOS = !!u.match(/(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
//sms:10086?body=1008611 sms:10086&body=1008611
if(isAndroid == true) {
       window.location.href=("sms:10694006929598?body="+text);
} else if(isiOS == true) {
        window.location.href=("sms:10694006929598&body="+text);
}
JS -- 正则

手机号码

   /^1(3[0-9]|4[57]|5[0-35-9]|7[0135678]|8[0-9])d{8}$/

电子邮箱

   /^([a-z0-9_.-]+)@([da-z.-]+).([a-z.]{2,6})$/
   /^[a-zd]+(.[a-zd]+)*@([da-z](-[da-z])?)+(.{1,2}[a-z]+)+$/

删除 emoji 表情

   str.replace(/[uD800-uDBFF][uDC00-uDFFF]/g,"");

获取用户地理位置


错误代码:
-Permission denied - 用户不允许地理定位
-Position unavailable - 无法获取当前位置
-Timeout - 操作超时
-Unknown error - 未知错误

JS -- 数组去重
Array.prototype.unique_filterArray = Array.prototype.unique_filterArray || function(){
    return this.filter(function(item, index, arr){
        return arr.indexOf(item) === index;
    });
}
 Array.prototype.unique = function(){
  var res = [];
  var json = {};
  for(var i = 0; i < this.length; i++){
   if(!json[this[i]]){
    res.push(this[i]);
    json[this[i]] = 1;
   }
  }
  return res;
 };
arr.unique();//调用 Array.prototype.unique
Array.prototype.remove = function(val) {
  var index = this.indexOf(val);
  if (index > -1) {
   this.splice(index, 1);
  }
 };
使用JQ删除某一项 -- arr.splice($.inArray(item,arr),1);
JS -- 解析URI参数

*将GET参数按照键值对的形式输出json
var str = "http://item.taobao.com/item.h...";*

  function getUrl(str) {
   var data1=str.split("?")[1];
   var result={};
   if(data1.indexOf("&") > -1) {
    var bigArr=data1.split("&");
    for(var a=0,b=bigArr.length;a

解析单个参数

   function getQueryString(name) {
       var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
       var r = window.location.search.substr(1).match(reg);
       if (r != null) return unescape(r[2]); return null;
   }
   
   http://10.8.15.176:666/bindSuccess/coupons.html?values=uri1&gets=uri2&types=uri3
   
   var values=getQueryString("values") ||300,
       gets=getQueryString("gets"),
       types=getQueryString("types");

JS -- 实现数组迭代方法

1、实现arr.forEach() IE8及以下不支持原生 Array.prototype.forEach
参考底部 Array.prototype.forEach

if (!Array.prototype.forEach) {
  Array.prototype.forEach = function(callback, thisArg) {
    var T, k;
    if (this == null) {
      throw new TypeError("this is null or not defined");
    }
    var O = Object(this);
    var len = O.length >>> 0;
    // 所有非数值转换成0;所有大于等于 0 等数取整数部分
    if (typeof callback !== "function") {
      throw new TypeError(callback + " is not a function");
    }
    if (arguments.length > 1) {
      T = thisArg;
    }
    k = 0;
    while (k < len) {
      var kValue;
      if (k in O) {
        kValue = O[k];
        callback.call(T, kValue, k, O);
      }
      k++;
    }
  };
}

2、实现arr.filter()
参考底部 Array.prototype.filter

if (!Array.prototype.filter){
  Array.prototype.filter = function(func, thisArg) {
    "use strict";
    if ( ! ((typeof func === "Function" || typeof func === "function") && this) )
        throw new TypeError();
   
    var len = this.length >>> 0,
        res = new Array(len), // preallocate array
        t = this, c = 0, i = -1;
    if (thisArg === undefined){
      while (++i !== len){
        // checks to see if the key was set
        if (i in this){
          if (func(t[i], i, t)){
            res[c++] = t[i];
          }
        }
      }
    }
    else{
      while (++i !== len){
        // checks to see if the key was set
        if (i in this){
          if (func.call(thisArg, t[i], i, t)){
            res[c++] = t[i];
          }
        }
      }
    }
    res.length = c; // shrink down array to proper size
    return res;
  };
}

JS -- cookie

var cookieUtil = {

get: function(name) {
    var cookieName = encodeURIComponent(name) + "=",
        cookieStart = document.cookie.indexOf(cookieName),
        cookieValue = null;
    if(cookieStart > -1) {
        var cookieEnd = document.cookie.indexOf(";", cookieStart);
        if(cookieEnd === -1) {
            cookieEnd = document.cookie.length;
        }
        cookieValue = decodeURIComponent(document.cookie.substring(cookieStart+cookieName.length, cookieEnd));
    }
    return cookieValue;
},
set: function(name, value, expires, path, domain, secure) {
    var cookieText = encodeURIComponent(name)+"="+encodeURIComponent(value);
    if(expires instanceof Date) {
        cookieText += "; expires=" + expires.toGMTString();
    } else if(typeof expires === "number") {
        cookieText += "; expires=" + (new Date(expires*24*60*60*1000+Date.now())).toGMTString();
    }
     (new Date(毫秒数)).toGMTString()
     7天后 (new Date(7*24*60*60*1000+Date.now())).toGMTString()
    if(path) { cookieText += "; path=" + path; }
    if(domain) { cookieText += "; domain=" + domain; }
    if(secure) { cookieText += "; secure"; }
    document.cookie = cookieText;
},
unset: function(name, path, domain, secure) { this.set(name, "", new Date(0), path, domain, secure); }

}
name: cookie唯一的名称 cookie必须经过URL编码 不区分大小写 实践中最好当作cookie区分大小写
value: 字符串值 必须经过URL编码
expires: 失效时间 cookie何时被删除的时间戳 默认情况下会话结束立即将所有cookie删除
path: 域 所有向该域的请求中都会包含cookie 可以包含子域名 也可以不包含
domain: 路径 对于指定域中的那个路径 应该向服务器发送cookie
secure: 安全标志 指定后,cookie只有在使用SSL连接时才会发送到服务器 是cookie中唯一一个非名值对的,直接包含secure

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/103007.html

相关文章

  • JS / CSS 常用实战代码片段

    摘要:常用模式片段之摘要第一次看到这个字眼是在中,即。之后也见到一些别人的代码里有,它和页面的有什么关系,以及和有何渊源。以前都见过这些词,但都似懂非懂,今天查了些资料收集了些代码,做个完整的理解。 CSS篇 常用模式片段之CSS布局篇 http://jsorz.cn/blog/2016/08/code-patterns-of-css-layout.html 摘要:position 拉伸性质...

    sutaking 评论0 收藏0
  • JS / CSS 常用实战代码片段

    摘要:常用模式片段之摘要第一次看到这个字眼是在中,即。之后也见到一些别人的代码里有,它和页面的有什么关系,以及和有何渊源。以前都见过这些词,但都似懂非懂,今天查了些资料收集了些代码,做个完整的理解。 CSS篇 常用模式片段之CSS布局篇 http://jsorz.cn/blog/2016/08/code-patterns-of-css-layout.html 摘要:position 拉伸性质...

    stackfing 评论0 收藏0
  • gulp常用功能集合(开发和生产分离、静态资源压缩优化、代码优化、实时预览、hash)

    摘要:在资源很多时,例如图片的复制,这个会加快任务的执行速度,特别是需要实时预览时,减少延迟。但是作为个入门短时间内还是不能够被取代得了的。 gulp常用功能集合(开发和生产分离、静态资源压缩优化、代码优化、实时预览、hash) tags: gulp 前端自动化开发 npm仓库下载地址https://www.npmjs.com/package/cddgulp [TOC]本人自用在此基础上的...

    silvertheo 评论0 收藏0
  • 从零开始的webpack生活-0x016:OtherPlugin其他常用

    摘要:概述上一章讲的是分离样式,这一章讲的是剩下的一些我常用的插件和上一章是没有任何关系。环境搭建定义环境插件介绍这个插件用来定义环境变量的,直接定义在了下。安装依赖添加资源修改配置打包其他更多配置请查阅关于资源源代码 0x001 概述 上一章讲的是分离样式,这一章讲的是剩下的一些我常用的插件,和上一章是没有任何关系。 0x002 环境搭建 $ mkdir 0x0016-other-plug...

    chinafgj 评论0 收藏0
  • atom中最好的js代码片段

    摘要:使用编辑器有一段时间一直没找到比较顺手的代码片段补全于是决定自己整合一个全的于是便有了这个代码片段包中包名叫有如下特性集成代码补全集成中模块的代码补全集成中模块的代码补全集成集成中操作的代码集成中和模块的补全集成中代码补全集成中集成中的 使用atom编辑器有一段时间,一直没找到比较顺手的代码片段补全,于是决定自己整合一个全的,于是便有了这个代码片段包,atom中包名叫 best-js-...

    hsluoyz 评论0 收藏0
  • Web报表工具FineReport的JS API开发(二)

    摘要:如果报表嵌在网页的中,在外获取对象如下常用方法方法说明获取指定单元格中的控件获取指定名字的控件获取指定名称的扩展控件,返回一个数组表单预览或参数界面,都有一个对象。 上次介绍FineReport的JS API中的第一类开发--FR,这次就来介绍一下FS和contentWindow类的开发。1 FSFS是数据决策系统中的js接口,比如说FS.tabPane.addItem,先介绍几类操作...

    freewolf 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<