`

自己整理的一套javascript小型公用库

阅读更多

/**
 * @author zjq common use jslib
 */
//事件侦听函数
function addLoadListener(fn){
    if (typeof window.addEventListener != 'undefined') {
        window.addEventListener('load', fn, false);
    }
    else 
        if (typeof document.addEventListener != 'undefined') {
            document.addEventListener('load', fn, false);
        }
        else 
            if (typeof window.attachEvent != 'undefined') {
                window.attachEvent('onload', fn);
            }
            else {
                var oldfn = window.onload;
                if (typeof window.onload != 'function') {
                    window.onload = fn;
                }
                else {
                    window.onload = function(){
                        oldfn();
                        fn();
                    };
                }
            }
}

//添加事件

function attachEventListener(target, eventType, functionRef, capture){
    if (typeof target.addEventListener != "undefined") {
        target.addEventListener(eventType, functionRef, capture);
    }
    else 
        if (typeof target.attachEvent != "undefined") {
            target.attachEvent("on" + eventType, functionRef);
        }
        else {
            eventType = "on" + eventType;
            
            if (typeof target[eventType] == "function") {
                var oldListener = target[eventType];
                
                target[eventType] = function(){
                    oldListener();
                    
                    return functionRef();
                }
            }
            else {
                target[eventType] = functionRef;
            }
        }
    
    return true;
}

//去除事件公用函数
function detachEventListener(target, eventType, functionRef, capture){
    if (typeof target.removeEventListener != "undefined") {
        target.removeEventListener(eventType, functionRef, capture)
    }
    else 
        if (typeof target.detachEvent != "undefined") {
            target.detachEvent("on" + eventType, functionRef);
        }
        else {
            target["on" + eventType] = null;
        }
    
    return true;
};


//for 检测滚动条位置
function getScrollPosition(){
    var position = [0, 0];
    if (typeof window.pageXOffset != "undefined") {
        position = [window.pageXOffset, window.pageYOffset];
        //for ko,safri,firefox早期浏览器,opera;
    }
    else {
        if (typeof document.documentElement.scrollTop != "undefined" && document.documentElement.scrollTop > 0) {
            //for ie,后期firefox支持;
            position = [document.documentElement.scrollLeft, document.documentElement.scrollTop];
            
        }
        else 
            if (typeof document.body.scrollLeft != "undefined") {
                position = [document.body.scrollLeft, document.body.scrollTop];
            }
    }
    return position;
    
}

//for 检测光标位置

function getCursorPosition(event){
    //for ie event
    if (typeof event == "undefined") {
        event = window.event;
    }
    var scrollPostion = getScrollPosition();
    //  alert(scrollPostion[0]);
    // alert(scrollPostion[1]);
    
    var aCursorPosition = [0, 0];
    if (typeof pageX != "undefined" && typeof event.x != "undefined") //event.x for Mac下的ie有pageX属性,但是它
    //返回的值与事实不符,所以要核实一下属性x.
    {
        aCursorPosition[0] = event.pageX;
        aCursorPosition[1] = event.pageY;
    }
    else {
        aCursorPosition[0] = event.clientX + scrollPostion[0];
        aCursorPosition[1] = event.clientY + scrollPostion[1];
    }
    
    //var oResult = document.getElementById("result");
    
    // oResult.innerHTML = "X坐标为:" + aCursorPosition[0] + '\r' + "Y坐标为:" + aCursorPosition[1];
    return true;
}

//for 查看一个元素的属性

function retrieveComputedStyle(element, styleProperty){
    var computedStyle = null;
    
    if (typeof element.currentStyle != "undefined") {
        computedStyle = element.currentStyle;
    }
    else {
        computedStyle = document.defaultView.getComputedStyle(element, null);
    }
    
    return computedStyle[styleProperty];
}


function getElePosition(theEle){
    var xTheEle = 0;
    var yTheEle = 0;
    while (theEle != null) {
        xTheEle += theEle.offsetLeft;
        yTheEle += theEle.offsetTop;
        theEle = theEle.offsetParent;
        
    }
    return [xTheEle, yTheEle];
}

//for 检测浏览器
function identifyBrowser(){
    var agent = navigator.userAgent.toLowerCase();
    
    if (typeof navigator.vendor != "undefined" && navigator.vendor == "KDE" && typeof window.sidebar != "undefined") {
        return "kde";
    }
    else 
        if (typeof window.opera != "undefined") {
            var version = parseFloat(agent.replace(/.*opera[\/ ]([^ $]+).*/, "$1"));
            
            if (version >= 7) {
                return "opera7";
            }
            else 
                if (version >= 5) {
                    return "opera5";
                }
            
            return false;
        }
        else 
            if (typeof document.all != "undefined") {
                if (typeof document.getElementById != "undefined") {
                    var browser = agent.replace(/.*ms(ie[\/ ][^ $]+).*/, "$1").replace(/ /, "");
                    
                    if (typeof document.uniqueID != "undefined") {
                        if (browser.indexOf("5.5") != -1) {
                            return browser.replace(/(.*5\.5).*/, "$1");
                        }
                        else {
                            return browser.replace(/(.*)\..*/, "$1");
                        }
                    }
                    else {
                        return "ie5mac";
                    }
                }
                
                return false;
            }
            else 
                if (typeof document.getElementById != "undefined") {
                    if (navigator.vendor.indexOf("Apple Computer, Inc.") != -1) {
                        if (typeof window.XMLHttpRequest != "undefined") {
                            return "safari1.2";
                        }
                        
                        return "safari1";
                    }
                    else 
                        if (agent.indexOf("gecko") != -1) {
                            return "mozilla";
                        }
                }
    
    return false;
};

//for 检测操作系统


function identifyOS(){
    var agent = navigator.userAgent.toLowerCase();
    
    if (agent.indexOf("win") != -1) {
        return "win";
    }
    else 
        if (agent.indexOf("mac")) {
            return "mac";
        }
        else {
            return "unix";
        }
    
    return false;
};

//for 检测event事件所指定的对象
function getEventTarget(event){
    var targetElement = null;
    
    if (typeof event.target != "undefined") {
        targetElement = event.target;
    }
    else {
        targetElement = event.srcElement;
    }
    
    while (targetElement.nodeType == 3 && targetElement.parentNode != null) {
        targetElement = targetElement.parentNode;
    }
    
    return targetElement;
};


function addEventHandler(oTarget, sEventType, fnHandler){
    if (oTarget.addEventListener) {
        oTarget.addEventListener(sEventType, fnHandler, false);
    }
    else 
        if (oTarget.attachEvent) {
            oTarget.attachEvent("on" + sEventType, fnHandler);
        }
        else {
            oTarget["on" + sEventType] = fnHandler;
        }
};

function removeEventHandler(oTarget, sEventType, fnHandler){
    if (oTarget.removeEventListener) {
        oTarget.removeEventListener(sEventType, fnHandler, false);
    }
    else 
        if (oTarget.detachEvent) {
            oTarget.detachEvent("on" + sEventType, fnHandler);
        }
        else {
            oTarget["on" + sEventType] = null;
        }
};



//返回一个对象
var $ = function(id){
    return "string" == typeof id ? document.getElementById(id) : id;
};
//阻止默认动作事件
function stopDefaultAction(event){
    event.returnValue = false;
    
    if (typeof event.preventDefault != "undefined") {
        event.preventDefault();
    }
    
    return true;
};

//根据event返回获到到的一个对象
function getEventTarget(event){
    var targetElement = null;
    
    if (typeof event.target != "undefined") {
        targetElement = event.target;
    }
    else {
        targetElement = event.srcElement;
    }
    
    while (targetElement.nodeType == 3 && targetElement.parentNode != null) {
        targetElement = targetElement.parentNode;
    }
    
    return targetElement;
};
//返回一个对象的位置

function getPosition(theElement){
    var positionX = 0;
    var positionY = 0;
    
    while (theElement != null) {
        positionX += theElement.offsetLeft;
        positionY += theElement.offsetTop;
        theElement = theElement.offsetParent;
    }
    
    return [positionX, positionY];
};


自己整理的公用库。持续更新
分享到:
评论

相关推荐

    如何设计一套JavaScript课程体系+编程知识+技术开发

    如何设计一套JavaScript课程体系+编程知识+技术开发; 如何设计一套JavaScript课程体系+编程知识+技术开发; 如何设计一套JavaScript课程体系+编程知识+技术开发; 如何设计一套JavaScript课程体系+编程知识+技术...

    封装好的一套javascript操作Excel的javabean

    实现javascript操作Excel进行报表输出的javabean接口类,通过调用bean的方法快速生成客户端的javascript来操作Excel,实现读取Excel模板,添加记录,打印设置,打印预览,自动保存文件等功能,本人多年的web开发经验...

    javascript汉字拼音库

    js获取汉字字符串的首字母必须先从库里面进行比较。这就是可能用到的库。

    基于JavaScript的公用资源设计源码集合

    本项目汇集了85个基于JavaScript的公用资源设计源码,涵盖77个PNG图片、5个JPG图片、2个Markdown文档和1个JavaScript文件。资源丰富多样,旨在为开发者提供便捷的代码复用和资源共享平台。

    C++调JavaScript开发库及MFC(6.0)示例源码

    本示例源码是关于如何使用C++调用JavaScript开发库,并结合MFC(Microsoft Foundation Classes)框架进行编程的实例。MFC是微软提供的一个C++库,用于简化Windows应用程序的开发。 首先,我们来看C++调用JavaScript...

    JavaScript开发webgis库源码

    JavaScript开发WebGIS库源码是针对地理信息系统(GIS)在Web环境中的应用而设计的一套基础框架。这个库主要用于创建和操作地图,提供了一个简洁的结构,没有过于复杂的继承关系,便于理解和学习。其核心是mapTool.js...

    webGL编程指南4个公用函数库

    2. **GLGE (GL Graphics Engine)**:GLGE是一个轻量级的WebGL库,专注于提供一套完整的工具来创建高质量的3D图形。它包含了加载3D模型(如Collada或Wavefront OBJ格式)、材质系统、光照、粒子系统以及动画功能。...

    FPO是一个用于JavaScript的FP库

    在这个标题中,“FPO”指的是一个JavaScript函数式编程库,它专为JavaScript开发者设计,旨在提供一套功能强大的工具,以实现函数式编程的理念和实践。函数式编程是一种编程范式,强调通过避免可变状态和副作用来...

    基于Javascript和TypeScript的简易UI组件库设计源码 - N53-UI

    本源码提供了一个基于Javascript和TypeScript的简易UI组件库的设计。项目包含15439个文件,其中包括9232个JavaScript文件、1429个Markdown文档、1406个JSON文件、812个TypeScript文件、424个Map文件、148个YAML文件...

    一个小型的前端界面库

    在IT行业中,前端开发是构建Web应用程序不可或缺的一部分,而“一个小型的前端界面库”恰好是专注于这个领域的工具。这个库可能包含了一系列组件和函数,旨在简化开发者的工作,提高效率,同时保持轻量级,以确保...

    针对微信小程序整合的一套UI库

    同时,由于UI库是开源的,开发者也可以参与到其中,为库的改进和扩展贡献自己的力量。 总之,"针对微信小程序整合的一套UI库"是开发者的重要助手,它提供了丰富的组件和样式,帮助快速构建专业级别的微信小程序应用...

    JavaScript脚本库.rar

    JavaScript脚本库是Web开发中不可或缺的一部分,它们提供了一系列预定义的功能和工具,极大地提高了开发效率,降低了开发难度。在JavaScript的世界里,脚本库扮演着重要角色,为开发者提供了丰富的交互效果、动画...

    Cloudgamer JavaScript Library v0.1 JavaScript 工具库发布.zip

    Cloudgamer JavaScript Library v0.1 库的发布,意味着开发者可以获得一套预封装的解决方案,减少重复工作,提高开发速度,同时也能通过库中的最佳实践来改善游戏性能。 该库的标签"css3"表明它可能整合了CSS3的...

    一套开源免费的 Web UI 组件库,采用自身轻量级模块化规范,遵循原生态的 HTML/CSS/JavaScript 开发模式

    Layui 是一套开源免费的 Web UI 组件库,采用自身轻量级模块化规范,遵循原生态的 HTML/CSS/JavaScript 开发模式,极易上手,拿来即用。其风格简约轻盈,而内在雅致丰盈,甚至包括文档在内的每一处细节都经过精心...

    MorningUI是一套桌面端UI组件库基于Vuejs

    MorningUI,作为一个专为桌面端设计的UI组件库,其核心是与流行的JavaScript框架Vue.js紧密结合,为开发者提供了丰富的可复用、易于定制的界面元素。Vue.js以其轻量级、高性能和易上手的特性,已经在全球范围内赢得...

    promiscuous, 面向JavaScript的小型和快速承诺库.zip

    promiscuous, 面向JavaScript的小型和快速承诺库 混乱 promiscuous是承诺/a 规范的一个微小实现。它是JavaScript中的承诺库,小的 ( 。缩小/) 和快速的。安装和使用 node首先,使用npm安装混杂。$ np

    一些有趣的Javascript库框架集合按名称首字母az归类

    JavaScript是Web开发中不可或缺的一部分,尤其在前端领域,它的库和框架极大丰富了我们的开发工具箱。本资源集合提供了一个有趣的、按名称首字母排序的JavaScript库和框架列表,覆盖了从A到Z的各种选择。这不仅方便...

    GEE平台用于编写小型代码库应用程序GEET(谷歌地球引擎工具箱)-master.zip

    Google Earth Engine Toolbox (GEET) 是一个 JavaScript 单文件库,可帮助开发人员使用 Google Earth Engine (GEE) 平台编写小型代码库应用程序。 该库还可用于教新开发人员使用该平台,即使之前没有任何编程技能。

    基于C#和JavaScript的WPF控件库HandyControl设计源码

    该项目是一套基于C#和JavaScript的WPF控件库HandyControl的设计源码,共包含1855个文件,涵盖了796个C#源文件、341个XAML标记文件、167个Markdown文档、108个Stylus脚本文件、92个SWIG接口文件、73个位图图像文件、...

    基于Html和JavaScript的案例库设计源码分享

    本项目提供一套基于Html和JavaScript的案例库设计源码,包含共计159个文件,涵盖丰富的资源,包括40个PNG图片、39个JPG图片、24个JavaScript文件、17个CSS文件、13个Less、Scss文件以及少量字体和动画文件。...

Global site tag (gtag.js) - Google Analytics