`

自己整理的一套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汉字拼音库

    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...

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

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

    一个小型的前端界面库

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

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

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

    Raphaljs是一个小型的JavaScript库用来简化在页面上显示向量图的工作

    Raphaël.js 是一个小型的 JavaScript 库,用来简化在页面上显示向量图的工作。你可以用它在页面上绘制各种图表、并进行图片的剪切、旋转等操作。 Raphaël.js 使用SVG W3C推荐标准和VML作为创建图形的基础。

    JavaScript教程--从入门到精通 PPT [免费版]

    这一套javascript教程分九个章节从什么是javascript、javascript的简单应用一直介绍到如何用javascript实现复杂的交互,对于javascript初学者和进阶者来说,都是一部不可多得的优秀教程。 一、 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组件库,它构建于流行的前端框架Vue.js之上。Vue.js是一个轻量级、高性能且灵活的JavaScript框架,它简化了前端开发,提供了丰富的API和插件生态系统,使得构建复杂的用户...

    基于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文件以及少量字体和动画文件。...

    Licia是一套在开发中实践积累起来的实用JavaScript工具库

    该库目前拥有超过180个模块,包括Dom操作,cookie设置,类创建,模板函数,日期格式化等实用模块,同时配套有打包工具Eustia进行定制化,使JS脚本加载量缩减在10KB以下,极大优化移动端页面的加载速度。

    JavaScript_由成员投票选出的最佳开源GitHub库.zip

    首先,"awesome-opensource_main.zip"可能是一个包含“Awesome Open Source”项目的列表,这是一个非常受欢迎的GitHub仓库,其中整理了各种优秀开源项目,涵盖了JavaScript在内的多个编程语言。在这个列表中,你可以...

    jsfft, 小型高效的Javascript FFT实现.zip

    jsfft, 小型高效的Javascript FFT实现 jsfft用于 node 或者浏览器的小型。高效的Javascript实现。用法JSFFT附带的可以运行于以下位置:const fft = require('jsfft');// Use the in-place ma

    一套经典的网页加CGI程序

    4. JavaScript库:可能包括用于AJAX操作的库,如jQuery或其他轻量级库。 5. 示例数据或配置文件:帮助理解程序如何工作和配置。 6. 读取和写入的数据格式示例:如JSON或XML,这些是AJAX与CGI之间交换数据的常见格式...

Global site tag (gtag.js) - Google Analytics