cookievar 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
获取用户地理位置
var x = document.getElementById("demo");
function getLocation() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(showPosition, showError);
}
else {
x.innerHTML = "Geolocation is not supported by this browser.";
}
}
function showPosition(position) {
x.innerHTML = "Latitude: " +
position.coords.latitude +
"
Longitude: " +
position.coords.longitude;
}
function showError(error) {
switch (error.code) {
case error.PERMISSION_DENIED:
x.innerHTML = "User denied the request for Geolocation."
break;
case error.POSITION_UNAVAILABLE:
x.innerHTML = "Location information is unavailable."
break;
case error.TIMEOUT:
x.innerHTML = "The request to get user location timed out."
break;
case error.UNKNOWN_ERROR:
x.innerHTML = "An unknown error occurred."
break;
}
}
错误代码:
-Permission denied - 用户不允许地理定位
-Position unavailable - 无法获取当前位置
-Timeout - 操作超时
-Unknown error - 未知错误
实现数组迭代方法
1、实现arr.forEach() IE8及以下不支持原生 Array.prototype.forEach
参考底部 Array.prototype.forEachif (!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++;
}
};
}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;
};
}
数组去重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);
[更多方法链接](https://blog.csdn.net/weixin_43242112/article/details/106951974)
解析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
var smallArr=bigArr[a].split("=");
result[smallArr[0]]=smallArr[1];
}
} else {
var arr1=data1.split("=");
result[arr1[0]]=arr1[1];
}
console.log(result);
return result;
}
getUrl("http://10.8.15.176:666/wx.html?a=1");//{a:"1"}
getUrl("http://10.8.15.176:666/wx.html?a=1&b=2&c=3&d");//{a: "1", b: "2", c: "3", d: undefined}
解析单个参数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(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-z\d]+(\.[a-z\d]+)*@([\da-z](-[\da-z])?)+(\.{1,2}[a-z]+)+$/
删除 emoji 表情str.replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,'');
通信
1、移动端打电话window.location.href = ("tel:" + phone);
2、移动端发送短信--Android、iOSvar 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);
}