js常用utils
var utils = {
/**
* 日期格式化
*
* @param {Date} date 指定日期
* @param {String} format
* @returns {String}
* @summary 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符,
* 年(y)可以用 1-4个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字)
* @example (new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02
* 08:09:04.423 (new Date()).Format("yyyy-M-d h:m:s.S") ==> 2006-7-2 8:9:4.18
*/
formatDate: function(date, format) {
var o = {
'M+': date.getMonth() + 1, //month
'd+': date.getDate(), //day
'h+': date.getHours(), //hour
'm+': date.getMinutes(), //minute
's+': date.getSeconds(), //second
'q+': Math.floor((date.getMonth() + 3) / 3), //quarter
'S': date.getMilliseconds() //millisecond
};
if (/(y+)/.test(format)) {
format = format.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length));
}
for ( var k in o) {
if (new RegExp('(' + k + ')').test(format)) {
format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ('00' + o[k]).substr(('' + o[k]).length));
}
}
return format;
},
// 获取过去的n天
getBeforeDay: function(date, days) {
var date = date || new Date();
return new Date(Date.parse(date.toString()) - 86400000 * days);
},
// 查询字符串
getQueryString: function(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
var r = window.location.search.substr(1).match(reg); // 获取url中"?"符后的字符串并正则匹配
var context = "";
if (r != null) {
context = r[2];
}
reg = null;
r = null;
return (context == null || context == "" || context == "undefined") ? "" : context;
},
// 删除空白字符串
delBlankSpace: function(str) {
var str = str.replace(/<\/?[^>]*>/gim, "");// 去掉所有的html标记
var result = str.replace(/(^\s+)|(\s+$)/g, "");// 去掉前后空格
return result.replace(/\s/g, "");// 去除文章中间空格
},
// 判断参数非空
validateBlank: function(tmp) {
if (!tmp && typeof (tmp) != "undefined" && tmp != 0) {
// null
return;
} else if (typeof (tmp) == "undefined") {
// undefined
return;
} else if (Array.isArray(tmp) && tmp.length === 0) {
// 空数组
return;
} else if ($.trim(tmp) == "") {
// 空串
return;
} else if (Object.prototype.isPrototypeOf(tmp) && Object.keys(tmp).length === 0) {
// 空对象
return;
} else {
return tmp;
}
},
// 检测段落里空格和换行,转换成html输出
blankRegExp: function(str) {
if (typeof str != "string")
return "";
return this.htmlEncode(str).replace(/\r{0,}\n/g, '<br/>');
},
// 转义html为安全文本
htmlEncode: function(str) {
//多个replace会有bug
//return str.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/\"/g, """).replace(/\'/g, "'").replace(/ /g, " ");
var html_encodes = {
'&': '&',
'<': '<',
'>': '>',
'"': '"',
"'": "'",
' ': ' '
};
return str.replace(/(&|<|>|\"|\'| )/g, function(str, item) {
return html_encodes[item];
});
},
//正则解码
htmlDecode: function(str) {
var html_decodes = {
'&':'&',
'<':'<',
'>':'>',
'"':'"',
"'":"'",
' ':' '
};
return str.replace(/(&|<|>|"|'| )/g, function(str, item) {
return html_decodes[item];
});
},
/*用浏览器内部转换器实现html转码*/
HTMLEncode:function (html){
//1.首先动态创建一个容器标签元素,如DIV
var temp = document.createElement ("div");
//2.然后将要转换的字符串设置为这个元素的innerText(ie支持)或者textContent(火狐,google支持)
(temp.textContent != undefined ) ? (temp.textContent = html) : (temp.innerText = html);
//3.最后返回这个元素的innerHTML,即得到经过HTML编码转换的字符串了
var output = temp.innerHTML;
temp = null;
return output;
},
/*用浏览器内部转换器实现html解码*/
HTMLDecode: function(input) {
var converter = document.createElement("DIV");
converter.innerHTML = input;
var output = converter.innerText;
converter = null;
return output;
},
// 裁剪文字,显示...
cutText: function(str, maxLength, showEllipsis) {
if (str.length > maxLength) {
str = str.substr(0, maxLength);
if (showEllipsis) {
str += "...";
}
}
return str;
},
// 判断微信内置浏览器
isWeixin: function() {
var ua = navigator.userAgent.toLowerCase();
return (ua.match(/MicroMessenger/i) == "micromessenger");
},
// [Hack]修改iOS微信浏览器的title
setTitle: function(t) {
document.title = t;
var i = document.createElement('iframe');
i.src = '//m.baidu.com/favicon.ico';
i.style.display = 'none';
i.onload = function() {
setTimeout(function() {
i.remove();
}, 9);
}
document.body.appendChild(i);
},
// 微信分享
shareToWeiXin: function(param, success, cancel, mSuccess, mCancel) {
var self = this;
// this.getContent(utils.getQueryString("infoId"),utils.getQueryString('salesmanId'));
var url = location.href.split('#')[0];
alert('验证签名url == ' + url)
alert('分享参数param==' + JSON.stringify(param));
$.ajax({
url: '/plug/do/common/weixin/genWxConfig',
type: 'post',
data: {
url: url,
authType: '1'
},
dataType: 'json',
success: function(data) {
if (data && data.resultCode === '000') {
var config = data.data.config;
config.debug = true;
config.jsApiList = [ 'checkJsApi', 'showMenuItems', 'onMenuShareAppMessage', 'onMenuShareTimeline' ];
wx.config(config);
wx.ready(function() {
wx.showMenuItems({
menuList: [ "menuItem:share:appMessage", "menuItem:share:timeline" ]
});
wx.onMenuShareAppMessage({//分享朋友
title: param.infoTitle,
desc: param.infoSummary, // 分享描述
imgUrl: param.imgUrl,
link: param.link, // 分享链接
success: function() {
success && success();
},
cancel: function() {
cancel && cancel();
}
});
wx.onMenuShareTimeline({//分享朋友圈
title: param.infoTitle,
desc: param.infoSummary, // 分享描述
imgUrl: param.imgUrl,
link: param.link, // 分享链接
success: function() {
mSuccess && mSuccess();
},
cancel: function() {
mCancel && mCancel();
}
});
});
wx.error(function(res) {
alert('error :' + JSON.stringify(res));
});
}
},
error: function(err) {
alert("err:" + JSON.stringify(err))
console.log('请求页面报错: ' + err);
}
});
},
// 微信授权
getUserInfo: function(success) {
var self = this;
var url = location.href;
var wxCode = utils.getQueryString("code");
alert('wxCode==' + wxCode);
Backbone.ajax({
url: '/plug/do/A2ATApp/saveCustomerInfo',
dataType: "JSON",
type: "post",
data: {
code: wxCode,
operationSystem: 'IOS-test',
network: '4G-test',
operatorType: 'operatorType',
models: 'models',
appVersion: 'appVersion'
},
success: function(data) {
if (data && data.resultCode == '000') {
success && success();
} else {
alert('userInfo=' + JSON.stringify(data));
}
},
error: function(e) {
alert('error==' + JSON.stringify(e));
}
});
},
// 获取页面停留时间,依赖jquery.cookie.js
countStayTime: function() {
var second = 0;
window.setInterval(function() {
second++;
}, 1000);
var tjArr = localStorage.getItem("jsArr") ? localStorage.getItem("jsArr") : '[{}]';
$.cookie('tjRefer', getReferrer(), {
expires: 1,
path: '/'
});
window.onbeforeunload = function() {
if ($.cookie('tjRefer') == '') {
var tjT = eval('(' + localStorage.getItem("jsArr") + ')');
if (tjT) {
tjT[tjT.length - 1].time += second;
var jsArr = JSON.stringify(tjT);
localStorage.setItem("jsArr", jsArr);
}
} else {
var tjArr = localStorage.getItem("jsArr") ? localStorage.getItem("jsArr") : '[{}]';
var dataArr = {
'url': location.href,
'time': second,
'refer': getReferrer() || document.referrer,
'timeIn': Date.parse(new Date()),
'timeOut': Date.parse(new Date()) + (second * 1000)
};
tjArr = eval('(' + tjArr + ')');
tjArr = JSON.stringify(dataArr);
localStorage.setItem("jsArr", tjArr);
}
var standTime = (JSON.parse(localStorage.getItem('jsArr'))).time;
return standTime; //单位:s
};
},
// 获取前一个页面的url
getReferrer: function() {
var referrer = '';
try {
referrer = window.top.document.referrer;
} catch (e) {
if (window.parent) {
try {
referrer = window.parent.document.referrer;
} catch (e2) {
referrer = '';
}
}
}
if (referrer === '') {
referrer = document.referrer;
}
return referrer;
},
//屏蔽alert 弹框
noAlert : function(){
//if(true) return
window.alert = function(str) {
return;
};
},
};
//event事件
var EventUtil={ addHandler:function(element,type,handler){ //添加事件
if(element.addEventListener){
element.addEventListener(type,handler,false); //使用DOM2级方法添加事件
}else if(element.attachEvent){ //使用IE方法添加事件
element.attachEvent("on"+type,handler);
}else{
element["on"+type]=handler; //使用DOM0级方法添加事件
}
}, removeHandler:function(element,type,handler){ //取消事件
if(element.removeEventListener){
element.removeEventListener(type,handler,false);
}else if(element.detachEvent){
element.detachEvent("on"+type,handler);
}else{
element["on"+type]=null;
}
}, getEvent:function(event){ //使用这个方法跨浏览器取得event对象
return event?event:window.event;
}, getTarget:function(event){ //返回事件的实际目标
return event.target||event.srcElement;
}, preventDefault:function(event){ //阻止事件的默认行为
if(event.preventDefault){
event.preventDefault();
}else{
event.returnValue=false;
}
}, stopPropagation:function(event){ //立即停止事件在DOM中的传播
//避免触发注册在document.body上面的事件处理程序
if(event.stopPropagation){
event.stopPropagation();
}else{
event.cancelBubble=true;
}
}, getRelatedTarget:function(event){ //获取mouseover和mouseout相关元素
if(event.relatedTarget){
return event.relatedTarget;
}else if(event.toElement){ //兼容IE8-
return event.toElement;
}else if(event.formElement){
return event.formElement;
}else{
return null;
}
}, getButton:function(event){ //获取mousedown或mouseup按下或释放的按钮是鼠标中的哪一个
if(document.implementation.hasFeature("MouseEvents","2.0")){
return event.button;
}else{
switch(event.button){ //将IE模型下的button属性映射为DOM模型下的button属性
case 0:
case 1:
case 3:
case 5:
case 7:
return 0; //按下的是鼠标主按钮(一般是左键)
case 2:
case 6:
return 2; //按下的是中间的鼠标按钮
case 4:
return 1; //鼠标次按钮(一般是右键)
}
}
}, getWheelDelta:function(event){ //获取表示鼠标滚轮滚动方向的数值
if(event.wheelDelta){
return event.wheelDelta;
}else{
return -event.detail*40;
}
}, getCharCode:function(event){ //以跨浏览器取得相同的字符编码,需在keypress事件中使用
if(typeof event.charCode=="number"){
return event.charCode;
}else{
return event.keyCode;
}
} };
js常用utils的更多相关文章
- ecshop里提出来的js常用函数
目录 Utils.js jquery.listTable.js 使用例子: ecshop里提出来的js常用函数 Utils.js /* $Id : utils.js 5052 2007-02-03 1 ...
- js 常用功能实现(函数)
1.10 个短小实用的代码片段 :https://www.jianshu.com/p/3ef822ec5a63 2.js常用函数 : https://www.cnblogs.com/wangyuyu ...
- js常用工具类.
一些js的工具类 复制代码 /** * Created by sevennight on 15-1-31. * js常用工具类 */ /** * 方法作用:[格式化时间] * 使用方法 * 示例: * ...
- Js常用技巧
摘录:http://crasywind.blog.163.com/blog/static/7820316920091011643149/ js 常用技巧 1. on contextmenu=" ...
- JS常用的标准函数
原文:JS常用的标准函数 1.Array类型函数 array.concat(item...) 函数功能:关联数组,实现数组相加功能,但并不影响原先数组,concat返回新数组. array.join( ...
- JS 常用功能收集
JS 常用效果收集 1. 回到顶部>> 爱词霸
- JS常用校验方法(判断输入框是否为空,数字,电话,邮件,四舍五入等)
JS常用校验方法: 1.判断输入框是否为空,为空时弹出提示框 2.关闭窗口 3.检查输入字符串是否为数字 4.强制把大写转换成小写 5.手机号码校验,长度为11位数字. 6.电子邮件校验 7.电话号码 ...
- Node.js 常用工具
Node.js 常用工具 util 是一个Node.js 核心模块,提供常用函数的集合,用于弥补核心JavaScript 的功能 过于精简的不足. util.inherits util.inherit ...
- JS常用正则表达式备忘录
摘要: 玩转正则表达式. 原文:JS常用正则表达式备忘录 作者:前端小智 Fundebug经授权转载,版权归原作者所有. 正则表达式或"regex"用于匹配字符串的各个部分 下面是 ...
随机推荐
- fileupload页面跳转找不到原页面的解决方法
做了个上传图片的功能,之前做的全都对,完全可以实现,但是后来再弄的时候,只要FileUpload控件里面有字(选择了图片),再按button.它尽然不执行button1_click事件,直接页面跳转, ...
- mongodb 的一些启动命令
启动命令 nohup /home/sh/local/mongodb-linux-x86_64-rhel62-3.4.0/bin/mongod -dbpath /home/sh/local/mongod ...
- python 多线程要点
要点整理 多线程 #coding=utf-8 import threading from time import ctime,sleep def music(func): for i in range ...
- python 发红包
import random li = [] def fahongbao(money,num=6): if money > 0 and num != 1: n = round(random.uni ...
- 前端必须会的!!!关于对HTTP协议的理解、HTTP协议原理分析
http协议学习系列 1. 基础概念篇 1.1 介绍 HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写.它的发展是万维网协会(World Wide Web C ...
- 模拟admin组件自己开发stark组件之增删改查
增删改查,针对视图 我们需要modelform来创建,可自动生成标签,我们还要考虑用户是不是自己定制,依然解决方法是,继承和重写 app01下的joker.py文件 class BookModelFo ...
- 关于最大传输单元(MTU)的整理
MTU设置不当,可能会导致许多网络问题,如某些网络应用无法使用,某些网站无法访问等.下面是在网上搜索整理的关于MTU设置的东西,某些可能未作验证,仅供参考. 1. 如何确定网络MTU 某些ISP接入的 ...
- 大白话系列之C#委托与事件讲解大结局
声明:本系列非原创,因为太精彩才转载,如有侵权请通知删除,原文:http://www.cnblogs.com/wudiwushen/archive/2010/04/20/1698795.html 今天 ...
- 【洛谷】P1379 八数码难题(bfs)
题目 题目描述 在3×3的棋盘上,摆有八个棋子,每个棋子上标有1至8的某一数字.棋盘中留有一个空格,空格用0来表示.空格周围的棋子可以移到空格中.要求解的问题是:给出一种初始布局(初始状态)和目标布局 ...
- ThinkPHP 目录结构
2.0 ThinkPHP 目录结构 在前面的博客中,通过一个简单的案例向大家演示了在ThinkPHP 框架下开发的大致法程,本篇博客将对ThinkPHP框架目录结构进行详细讲解. 要想在项目中熟练地使 ...