最近学习了javascript,封装好的东西看起来舒服,以备需要的时候拉出来,jquery对javascript做了很好的封装!以后会多用jquery多些

var CookieUtil = {get: function (name){var cookieName = encodeURIComponent(name) + "=",cookieStart = document.cookie.indexOf(cookieName),cookieValue = null,cookieEnd;if (cookieStart > -1){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();}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);}};

/*SubCookieUtil.js*/var SubCookieUtil = {

    get: function (name, subName){        var subCookies = this.getAll(name);        if (subCookies){            return subCookies[subName];        } else {            return null;        }    },

    getAll: function(name){        var cookieName = encodeURIComponent(name) + "=",            cookieStart = document.cookie.indexOf(cookieName),            cookieValue = null,            cookieEnd,            subCookies,            i,            parts,            result = {};

        if (cookieStart > -1){            cookieEnd = document.cookie.indexOf(";", cookieStart)            if (cookieEnd == -1){                cookieEnd = document.cookie.length;            }            cookieValue = document.cookie.substring(cookieStart + cookieName.length, cookieEnd);

            if (cookieValue.length > 0){                subCookies = cookieValue.split("&");

                for (i=0, len=subCookies.length; i < len; i++){                    parts = subCookies[i].split("=");                    result[decodeURIComponent(parts[0])] = decodeURIComponent(parts[1]);                }

                return result;            }          } 

        return null;    },

    set: function (name, subName, value, expires, path, domain, secure) {

        var subcookies = this.getAll(name) || {};        subcookies[subName] = value;        this.setAll(name, subcookies, expires, path, domain, secure);

    },

    setAll: function(name, subcookies, expires, path, domain, secure){

        var cookieText = encodeURIComponent(name) + "=",            subcookieParts = new Array(),            subName;

        for (subName in subcookies){            if (subName.length > 0 && subcookies.hasOwnProperty(subName)){                subcookieParts.push(encodeURIComponent(subName) + "=" + encodeURIComponent(subcookies[subName]));            }        }

        if (subcookieParts.length > 0){            cookieText += subcookieParts.join("&");

            if (expires instanceof Date) {                cookieText += "; expires=" + expires.toGMTString();            }

            if (path) {                cookieText += "; path=" + path;            }

            if (domain) {                cookieText += "; domain=" + domain;            }

            if (secure) {                cookieText += "; secure";            }        } else {            cookieText += "; expires=" + (new Date(0)).toGMTString();        }

        document.cookie = cookieText;        

    },

    unset: function (name, subName, path, domain, secure){        var subcookies = this.getAll(name);        if (subcookies){            delete subcookies[subName];            this.setAll(name, subcookies, null, path, domain, secure);        }    },

    unsetAll: function(name, path, domain, secure){        this.setAll(name, null, new Date(0), path, domain, secure);    }

};

var EventUtil = {addHandler: function(element, type, handler){if (element.addEventListener){element.addEventListener(type, handler, false);} else if (element.attachEvent){element.attachEvent("on" + type, handler);} else {element["on" + type] = handler;}},getButton: function(event){if (document.implementation.hasFeature("MouseEvents", "2.0")){return event.button;} else {switch(event.button){case 0:case 1:case 3:case 5:case 7:return 0;case 2:case 6:return 2;case 4: return 1;}}},getCharCode: function(event){if (typeof event.charCode == "number"){return event.charCode;} else {return event.keyCode;}},getClipboardText: function(event){var clipboardData =  (event.clipboardData || window.clipboardData);return clipboardData.getData("text");},getEvent: function(event){return event ? event : window.event;},getRelatedTarget: function(event){if (event.relatedTarget){return event.relatedTarget;} else if (event.toElement){return event.toElement;} else if (event.fromElement){return event.fromElement;} else {return null;}},getTarget: function(event){return event.target || event.srcElement;},getWheelDelta: function(event){if (event.wheelDelta){return (client.engine.opera && client.engine.opera < 9.5 ? -event.wheelDelta : event.wheelDelta);} else {return -event.detail * 40;}},preventDefault: function(event){if (event.preventDefault){event.preventDefault();} else {event.returnValue = false;}},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;}},setClipboardText: function(event, value){if (event.clipboardData){event.clipboardData.setData("text/plain", value);} else if (window.clipboardData){window.clipboardData.setData("text", value);}},stopPropagation: function(event){if (event.stopPropagation){event.stopPropagation();} else {event.cancelBubble = true;}}};

var client = function(){//rendering enginesvar engine = {            ie: 0,gecko: 0,webkit: 0,khtml: 0,opera: 0,//complete versionver: null  };//browsersvar browser = {//browsersie: 0,firefox: 0,safari: 0,konq: 0,opera: 0,chrome: 0,//specific versionver: null};//platform/device/OSvar system = {win: false,mac: false,x11: false,//mobile devicesiphone: false,ipod: false,ipad: false,ios: false,android: false,nokiaN: false,winMobile: false,//game systemswii: false,ps: false };    //detect rendering engines/browsersvar ua = "Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0) Asus;Galaxy6";//navigator.userAgent;    if (window.opera){engine.ver = browser.ver = window.opera.version();engine.opera = browser.opera = parseFloat(engine.ver);} else if (/AppleWebKit\/(\S+)/.test(ua)){engine.ver = RegExp["$1"];engine.webkit = parseFloat(engine.ver);//figure out if it's Chrome or Safariif (/Chrome\/(\S+)/.test(ua)){browser.ver = RegExp["$1"];browser.chrome = parseFloat(browser.ver);} else if (/Version\/(\S+)/.test(ua)){browser.ver = RegExp["$1"];browser.safari = parseFloat(browser.ver);} else {//approximate versionvar safariVersion = 1;if (engine.webkit < 100){safariVersion = 1;} else if (engine.webkit < 312){safariVersion = 1.2;} else if (engine.webkit < 412){safariVersion = 1.3;} else {safariVersion = 2;}   browser.safari = browser.ver = safariVersion;        }} else if (/KHTML\/(\S+)/.test(ua) || /Konqueror\/([^;]+)/.test(ua)){engine.ver = browser.ver = RegExp["$1"];engine.khtml = browser.konq = parseFloat(engine.ver);} else if (/rv:([^\)]+)\) Gecko\/\d{8}/.test(ua)){    engine.ver = RegExp["$1"];engine.gecko = parseFloat(engine.ver);//determine if it's Firefoxif (/Firefox\/(\S+)/.test(ua)){browser.ver = RegExp["$1"];browser.firefox = parseFloat(browser.ver);}} else if (/MSIE ([^;]+)/.test(ua)){    engine.ver = browser.ver = RegExp["$1"];engine.ie = browser.ie = parseFloat(engine.ver);}//detect browsersbrowser.ie = engine.ie;browser.opera = engine.opera;//detect platformvar p = navigator.platform;system.win = p.indexOf("Win") == 0;system.mac = p.indexOf("Mac") == 0;system.x11 = (p == "X11") || (p.indexOf("Linux") == 0);//detect windows operating systemsif (system.win){if (/Win(?:dows )?([^do]{2})\s?(\d+\.\d+)?/.test(ua)){if (RegExp["$1"] == "NT"){switch(RegExp["$2"]){case "5.0":system.win = "2000";break;case "5.1":system.win = "XP";break;case "6.0":system.win = "Vista";break;case "6.1":system.win = "7";break;default:system.win = "NT";break;                }                            } else if (RegExp["$1"] == "9x"){system.win = "ME";} else {system.win = RegExp["$1"];}}}//mobile devicessystem.iphone = ua.indexOf("iPhone") > -1;system.ipod = ua.indexOf("iPod") > -1;system.ipad = ua.indexOf("iPad") > -1;system.nokiaN = ua.indexOf("NokiaN") > -1;//windows mobileif (system.win == "CE"){system.winMobile = system.win;} else if (system.win == "Ph"){if(/Windows Phone OS (\d+.\d+)/.test(ua)){;system.win = "Phone";system.winMobile = parseFloat(RegExp["$1"]);}}//determine iOS versionif (system.mac && ua.indexOf("Mobile") > -1){if (/CPU (?:iPhone )?OS (\d+_\d+)/.test(ua)){system.ios = parseFloat(RegExp.$1.replace("_", "."));} else {system.ios = 2;  //can't really detect - so guess
        }}//determine Android versionif (/Android (\d+\.\d+)/.test(ua)){system.android = parseFloat(RegExp.$1);}//gaming systemssystem.wii = ua.indexOf("Wii") > -1;system.ps = /playstation/i.test(ua);//return itreturn {engine:     engine,browser:    browser,system:     system        };}();

//跨浏览器添加事件 function addEvent(obj, type, fn) {    if (obj.addEventListener) {        obj.addEventListener(type, fn, false);    } else if (obj.attachEvent) {        obj.attachEvent('on' + type, function () {            fn.call(obj);        });    }}

//跨浏览器移除事件function removeEvent(obj, type, fn) {    if (obj.removeEventListener) {        obj.removeEventListener(type, fn, false);    } else if (obj.detachEvent) {        obj.detachEvent('on' + type, fn);    }}

//跨浏览器阻止默认行为function preDef(evt) {    var e = evt || window.event;    if (e.preventDefault) {        e.preventDefault();    } else {        e.returnValue = false;    }}

//跨浏览器获取目标对象function getTarget(evt) {    if (evt.target) {        //W3C        return evt.target;    } else if (window.event.srcElement) {        //IE        return window.event.srcElement;    }}

//跨浏览器获取字符编码function getCharCode(evt) {    var e = evt || window.event;    if (typeof e.charCode == 'number') {        return e.charCode;    } else {        return e.keyCode;    }}

function createXHR() {    if (typeof XMLHttpRequest != 'undefined') {        return new XMLHttpRequest();    } else if (typeof ActiveXObject != 'undefined') {        var version = [                                    'MSXML2.XMLHttp.6.0',                                    'MSXML2.XMLHttp.3.0',                                    'MSXML2.XMLHttp'        ];        for (var i = 0; version.length; i ++) {            try {                return new ActiveXObject(version[i]);            } catch (e) {                //跳过            }            }    } else {        throw new Error('您的系统或浏览器不支持XHR对象!');    }}

//名值对转换为字符串function params(data) {    var arr = [];    for (var i in data) {        arr.push(encodeURIComponent(i) + '=' + encodeURIComponent(data[i]));    }    return arr.join('&');}

//封装ajax
function ajax(obj) {var xhr = createXHR();obj.url = obj.url + '?rand=' + Math.random();obj.data = params(obj.data);if (obj.method === 'get') obj.url += obj.url.indexOf('?') == -1 ? '?' + obj.data : '&' + obj.data;if (obj.async === true) {xhr.onreadystatechange = function () {if (xhr.readyState == 4) {callback();}};}xhr.open(obj.method, obj.url, obj.async);if (obj.method === 'post') {xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');xhr.send(obj.data);    } else {xhr.send(null);}if (obj.async === false) {callback();}function callback() {if (xhr.status == 200) {obj.success(xhr.responseText);            //回调传递参数} else {alert('获取数据错误!错误代号:' + xhr.status + ',错误信息:' + xhr.statusText);}    }
}//调用ajax
addEvent(document, 'click', function () {ajax({method : 'post',url : 'demo3.php',data : {'name' : 'Lee','age' : 100},success : function (text) {alert(text);},async : true});
});

转载于:https://www.cnblogs.com/double405/p/5089196.html

封装cookie.js、EventUtil.js、相关推荐

  1. 原生js封装cookie插件

    最近迷上了react,用react模拟之前的系统,做登录的时候,发现需要用到cookie,之前用的跟vue搭配的VueCookie,我就在想啊,react应该也会有相应的cookie插件吧!百度一下, ...

  2. 【前端】跨浏览器事件处理程序EventUtil.js个人注释及详解

    <javascript高级程序设计>跨浏览器事件处理程序EventUtil.js个人注释 EventUtil.js // 跨浏览器事件处理程序封装 var EventUtil = {// ...

  3. react封装函数_react request.js 函数封装

    1.request.js  函数封装 import { Toast } from 'antd-mobile'; import axios from 'axios'; import store from ...

  4. 封装一个layui组件---js实现数字翻牌器效果

    封装一个layui组件-js实现数字翻牌器效果 layui.define(["jquery"], function (exports) {var $ = layui.jquery; ...

  5. 4 爬虫 selenium模块 图片点击验证 js加密 js混淆

    爬虫 1 selenium模块 1.1 简介 selenium模块一般用于基于浏览器的自动化测试工作,也可以用于爬虫. 使用selenium模块进行爬虫: 可以方便地捕获动态加载的数据,页面可见即可得 ...

  6. js设置ajax执行顺序,2018-03-10fiddler替换js、js的ajax方法执行顺序

    一.fiddler的替换js 替换js fiddler能够将js替换为指定的js文件,方便调试也许还能做更多的事情,在js中可以配置好假想返回的数据,更加方便的调试. 二.js的调用和有ajax函数时 ...

  7. 疯狂的html css,疯狂Html+CSS+JS 中JS总结

    0 总结 本书的JS 第一章有讲语法有挺多常见的坑点和原理解释很不错 第二章DOM编程讲述了挺多API 第三章事件处理机制其实对事件中的this关键字和事件传播顺序讲4. 解还不错 第四章WebSto ...

  8. js室内地图开发_使用JS+Three.js+Echart开发商场室内地图客流信息统计功能(下)...

    (2)实时视频及全景漫游的实现: 首先创建实时视频的摄像头图片标注和全景漫游的360°图片标注,标注实现后可在地图上点击相应的图片标注从而显示实时视频画面或360°全景画面,画面可拖拽可放大缩小. 各 ...

  9. 基于echarts+js+fexible.js实现的数据可视化适配案例(附源代码)

    介绍 数据可视化 :借助于图形化手段,清晰有效地传达与沟通信息 ECharts:是一个使用JavaScript实现的开源可视化库,可以流畅的运行在PC和移动设备上,兼容当前绝大部分浏览器,底层依赖矢量 ...

  10. vue-excel导出-单表头,多表头导出,Export2Excel.js Blob.js

    效果如图↓ 一级导出:↓  二级导出:如下图 三级导出:↓ Export2Excel.js Blob.js 等 安装依赖 npm install -S file-saver npm install - ...

最新文章

  1. tensorflow学习之(三)Varible 变量的使用
  2. 【java设计模式】-00目录
  3. Developing a blockchain framework for the automotive supply chain: A systematic review 汽车供应链区块链
  4. B系列台达服务器解密码步骤,台达HMI解密,DOP-A解密,DOP-B解密,文件密码解密
  5. behavior php,YII2框架中behavior行为的理解与使用方法示例
  6. 一行代码蒸发64亿人民币!黑客盯上区块链漏洞!Python真的变态!
  7. Cocos2d手机游戏引擎介绍
  8. java fifo lifo_别以为你很懂仓库FEFO 、 LIFO 、FIFO
  9. GMT、UTC、DST、CST时区代表的意义
  10. 一名交互设计师必备的知识架构
  11. Android系统build.prop文件生成过程
  12. ipam:allocate ip 172.16.3.7 to node x.x.x.112 allocator failed, provided IP is already allocated
  13. h5实现地图定位签到
  14. 网站防御cdn和高防服务器,高防IP和高防CDN哪个防护更好?
  15. 令牌桶过滤器(TBF)
  16. 车载测试——你需要掌握的Adb命令
  17. 经常用到的Eclipse快捷键(windows版)
  18. python tkinter获取屏幕大小_Python开发GUI工具介绍,实战:将图片转化为素描画
  19. 为大家推荐一款干货满满的杂志阅读APP,让你们重新回到从前!
  20. 怎样解决c盘文件无法更改

热门文章

  1. 九度OJ 1054:字符串内排序
  2. Sery送的书与网站短信解决方案
  3. PHP_SELF变量解析和重复路径解决
  4. 《计算复杂性:现代方法》——0.2 判定问题/语言
  5. Intellij IDEA 快捷键整理(dyCopy)
  6. AutoLISP 绘制表情图案
  7. IP大时代下,网络枪机技术发展现状
  8. ABB机器人套接口通信 机器人部分
  9. 【Python生成器与迭代器的区别】
  10. windows系统环境变量过长解决方案(PATH too long installer unable to modify Path)