封装cookie.js、EventUtil.js、

最近学习了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 engines
    var engine = {
        ie: 0,
        gecko: 0,
        webkit: 0,
        khtml: 0,
        opera: 0,

        //complete version
        ver: null
    };

    //browsers
    var browser = {

        //browsers
        ie: 0,
        firefox: 0,
        safari: 0,
        konq: 0,
        opera: 0,
        chrome: 0,

        //specific version
        ver: null
    };

    //platform/device/OS
    var system = {
        win: false,
        mac: false,
        x11: false,

        //mobile devices
        iphone: false,
        ipod: false,
        ipad: false,
        ios: false,
        android: false,
        nokiaN: false,
        winMobile: false,

        //game systems
        wii: false,
        ps: false
    };    

    //detect rendering engines/browsers
    var 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 Safari
        if (/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 version
            var 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 Firefox
        if (/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 browsers
    browser.ie = engine.ie;
    browser.opera = engine.opera;

    //detect platform
    var 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 systems
    if (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 devices
    system.iphone = ua.indexOf("iPhone") > -1;
    system.ipod = ua.indexOf("iPod") > -1;
    system.ipad = ua.indexOf("iPad") > -1;
    system.nokiaN = ua.indexOf("NokiaN") > -1;

    //windows mobile
    if (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 version
    if (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 version
    if (/Android (\d+\.\d+)/.test(ua)){
        system.android = parseFloat(RegExp.$1);
    }

    //gaming systems
    system.wii = ua.indexOf("Wii") > -1;
    system.ps = /playstation/i.test(ua);

    //return it
    return {
        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
    });
});
时间: 2024-07-30 13:49:30

封装cookie.js、EventUtil.js、的相关文章

JS封装cookie操作函数实例(设置、读取、删除)

本文实例讲述了JS封装cookie操作函数.分享给大家供大家参考,具体如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 /*设置cookie*/ function setCookie(name, value, iDay) {   var oDate=new Date();   oDate.setDate(oDate.getDate()+iDay);   document.cook

JS封装Cookie

/* @黑眼诗人 <www.chenwei.ws> */<script> //设置cookie: cookie名,cookie值,天数 function setCookie(name, value, iDay) { var oDate = new Data(); oDate.setDate(oDate.getDate() + iDay); document.cookie = name+ '=' +value+ '; expires = '+oDate } //获取cookie fu

封装自己的Common.js工具库

Code/** * Created by LT on 2013/6/16. * Common.js * 对原生JS对象的扩展 * Object.Array.String.Date.Ajax.Cookie */ ;(function(){ Object.extend =function(targetObj,fnJson){ for(var fnName in fnJson){ targetObj[fnName]=fnJson[fnName]; } return targetObj; }; /**

js 判断js函数、变量是否存在 JS保存和删除cookie操作,判断cookie是否存在的方法

//是否存在指定函数 function isExitsFunction(funcName) {    try {        if (typeof(eval(funcName)) == "function") {            return true;        }    } catch(e) {}    return false;}//是否存在指定变量 function isExitsVariable(variableName) {    try {        if

一个基于 EasyUI 的前台架构(3)封装操作Tabs的JS代码

一般来说,系统框架的主内容区会引入另一个独立的 Web 页面来实现系统的功能,所以在在 Tabs 里的每一个标签页里使用 iframe 标签来引入子页面.所以这里可以将 Tabs 的 Content 属性值设为一个 <iframe> 标签即可.比如: $("#tabs").tabs('add',{ title: "百度搜索", content: '<iframe style="width:100%;height:100%;" s

Angular JS + Express JS入门搭建网站

3月份开始,接到了新的任务,跟UI开发有关,用的是Angular JS,Express JS等技术.于是周末顺便学习下新技术. 组里产品UI架构如下: 其中前端,主要使用Angular JS框架,另外配合Bootstrap提供的很多控件以及JQuery,后台主要是Express JS搭建的Web Server,Express JS配合Nginx使用非常方便. 由此在项目不忙的时候,自己于是有时间和兴趣学习一下Angular JS与Express JS. 同时自己实现了一个最简单的Angular

疯狂Html+CSS+JS 中JS总结

0 总结 本书的JS 第一章有讲语法有挺多常见的坑点和原理解释很不错 第二章DOM编程讲述了挺多API 第三章事件处理机制其实对事件中的this关键字和事件传播顺序讲解还不错 第四章WebStorage本地存储例子鲜明 第五章Worker应付复杂的js操作 第六章客户端通信WebSocket挺有用,可以实现用户与用户在浏览器中互动 1. JavaScript语法 1.1 执行js代码 javascript:alert(‘执行js’);//一般放在超链接中,用户点击即执行, <script>al

node.js+Express.js+Jade+MongoDB开发Web即时聊天系统视频教程下载

ode.js+Express.js+Jade+MongoDB开发Web即时聊天系统视频教程下载  联系QQ:1026270010  一.课程背景 1.什么是Node.js ? Node.js 是一个可以快速构建网络服务及应用的平台 .该平台的构建是基于Chrome's JavaScript runtime,也就是说,实际上它是对Google V8引擎(应用于Google Chrome浏览器)进行了封装. V8引擎执行Javascript的速度非常快,性能非常好.Node对一些特殊用例进行了优化,

cocos2d-js 3.0 RC0 手动绑定 C++调用js,js调用C++ jsbinding

参考:http://www.tairan.com/archives/4902 参考文章是2.x版本的,对于3.0也许不合适了,没有深究. 代码:https://github.com/kenkozheng/cocos2d-js/tree/master/jsbinding(cpp_js%20js_cpp) 1 JS调用C++ 3.0中写这个绑定比较简单,跟ANE调用java如出一辙,一个JSContext,一个jsval,使用cocos2d提供的c++和js变量转换的函数做好转换即可. cocos2

sublime text2之js压缩-Js Minifier

一款基于Google Closure compiler压缩Js文件插件. 快捷键: Ctrl+Alt+M            当前文件内压缩Js代码(不推荐) Ctrl+Alt+Shift+M   压缩Js并生成压缩文件 *.min.js 安装成功重启,如果报错,在配置里改一个参数,"compiler": "uglify_js", { // the closure compiler adds new lines every 500 characters // fo