public.js

‘use strict‘;

// 获取CSS
function getStyle(obj, attr) {
    return (obj.currentStyle || getComputedStyle(obj, false))[attr];
}

// 设置CSS
function setStyle(obj, attr, val) {
    switch (typeof attr) {
        case ‘string‘:
            return obj.style[attr] = val;

        case ‘object‘:
            for (var i in attr) {
                obj.style[i] = attr[i];
            }
    }
}

// 获取随机整数
function rnd(min, max) {
    return Math.floor(Math.random() * (max - min + 1) + min);
}

// 获取DOM的绝对位置
function getPos(obj) {
    var t = obj.offsetTop,
        l = obj.offsetLeft,
        p = obj.offsetParent;
    while (p) {
        t += p.offsetTop,
        l += p.offsetLeft,
        p =  p.offsetParent;
    }
    return {top: t, left: l};
}

// 获取鼠标划入的方向
function hoverDir(e, obj) {
    var oh = document.documentElement,
        ob = document.body,
        sw = obj.offsetWidth,
        sh = obj.offsetHeight;
    var sx = getPos(obj).left + sw / 2 - e.clientX - (oh.offsetLeft || ob.offsetLeft),
        sy = getPos(obj).top  + sh / 2 - e.clientY - (oh.scrollTop  || ob.scrollTop);
    return (Math.round((Math.atan2(sy, sx) * 180 / Math.PI + 180) / 90) % 4 + 1) % 4 + 1;
}

// 初始化 rem
function initRem() {
    var w = window.innerWidth,
        e = 6.4,
        o = document.documentElement;
    o.style.fontSize = (Math.floor(w / e) >= 100 ? 100 : Math.floor(w / e)) + ‘px‘;
}

// 获取GET参数
function parseParams(property) {
    if (!property) return;
    var arr = location.search.substring(1).split(‘&‘), i, temp;
    for (i = 0; i < arr.length; i ++) {
        temp = arr[i].split(‘=‘);
        if (temp[0] === property) return decodeURIComponent(temp[1]);
    }
}

// Class是否存在
function hasClass(obj, sClass) {
    return !!(obj.className.match(new RegExp(‘(^|\\s)‘ + sClass + ‘(\\s|$)‘)));
}

// 添加Class
function addClass(obj, sClass) {
    !hasClass(obj, sClass) && (obj.className += ‘ ‘ + sClass);
}

// 删除Class
function removeClass(obj, sClass) {
    hasClass(obj, sClass) && (obj.className = obj.className.replace(sClass, ‘‘).replace(/(^\s+|\s+$)/, ‘‘));
}

// 把DOM A 放入到 DOM B 之后
function insertAfter(obj, target) {
    var nextDom = target.nextElementSibling || target.nextSibling;
    nextDom ? nextDom.parentNode.insertBefore(obj, nextDom) : target.parentNode.appendChild(obj);
}

// 字符按键
function getCharCode(e, isTrue) {
    if (e.charCode) {
        return !isTrue ? e.charCode : String.fromCharCode(e.charCode);
    }
    else {
        return !isTrue ? e.keyCode : String.fromCharCode(e.keyCode);
    }
}

// 获取动态创建的元素
function getTarget(e) {
    return e.target || e.srcElement;
}

// 获取最近的元素
function getRelatedTarget(e) {
    if (e.relatedTarget) {
        return e.relatedTarget;
    }
    else {
        switch (e.type.toLowerCase()) {
            case ‘mouseover‘:
                return e.fromElement;

            case ‘mouseout‘:
                return e.toElement;
        }
    }
}

// 取消传统事件冒泡
function stopPropagation(e) {
    window.event ? event.cancelBubble = true : e.stopPropagation();
}

// 取消事件默认行为
function preventDefault(e) {
    window.event ? event.returnValue = false : e.preventDefault();
}

// URL添加?
function unifyPath(options) {
    options = options || {};
    options.query = location.href.split(‘?‘)[1];
    unifyPath.path = options.url || ‘‘;
    unifyPath.data = options.data || ‘‘;
    if (typeof options.query === ‘undefined‘) {
        history.replaceState(null, null, location.href.split(‘#‘)[0] + ‘?XX‘ + location.hash);
        unifyPath(options);
    }
    else {
        if (options.query === options.url) {
            options.callback && options.callback(options.url);
        }
    }
}

// 添加一条历史记录
function pushState(json) {
    json = json || {};
    json.url = json.url ? ‘?‘ + json.url : ‘‘;
    json.data = json.data || {};
    json.title = json.title || null;
    history.pushState(json.data, json.title, json.url);
}

// 点击前进,后退按钮时触发
function popState(json) {
    json = json || {};
    window.onpopstate = function () {
        if (history.state) {
            json.have && json.have(history.state);
        }
        else {
            json.none && json.none(unifyPath.data, location.href.split(‘?‘)[1] === unifyPath.path);
        }
    };
}

// 在数组中查找xxx
function findInArr(arr, val) {
    if (!arr || !arr.length) return false;
    for (var i in arr) {
        if (arr[i] === val) return true;
    }
    return false;
}

// 数组中是否有重复项
function isRepeat(arr) {
    var json = {};
    for (var i in arr) {
        if (json[arr[i]]) return true;
        json[arr[i]] = true;
    }
    return false;
}

// 是不是数字
function isNumber(n) {
    return !(isNaN(n) || isNaN(parseFloat(n)));
}
时间: 2024-12-24 08:42:40

public.js的相关文章

常用的public.js

var publicFunc = { back : function(num){ var _num = num ? num : -1; if(navigator.userAgent.indexOf('Android') > -1){ window.callAndroid.back(_num); }else{ if(_num ==1 || _num ==3){ var arr = new Array(); arr[1] = '/bao/index'; arr[2] = '/task/index';

以后台权限菜单控制为例,获取js路径后面参数值

<script type="text/javascript" src="../Public/js/common.js?menuids=1,2,3,4,5&ckids=4-5-6" /></script> 需要注意的是,此段js文件位置需要放在页面中所有js包含文件后面,目前暂未想到好的办法解决位置问题. //获取js后面参数 function getUrlArg(){ var url = $("script:last&quo

使用js实现导航切换效果变化(收集案例)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

【js实例】js中的5种基本数据类型和9种操作符

js中的5中基本数据类型 js标识符 第一个字符必须为字母,下划线,或美元符 其他字符可以是字母,下划线,美元符,数字 js标识符区分大小写 标识符不能使关键字和保留字 关键字: break do instanceof typeof case else new var catch finally return void continue for switch while debugger function this with default if throw   delete in try  

js原生代码之图片轮播

话不多说说,直接上代码: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>无标题文档</title> <script src="./public/js/jquery-1.11.2-min.js">&l

asp.net后台添加css、 js 、 meta、ascx

1 //标题 2 Title = "标题"; 3 //关键词 4 HtmlMeta meta1 = new HtmlMeta(); 5 meta1.Name = "keywords"; 6 meta1.Content = "关键词"; 7 this.Page.Header.Controls.Add(meta1); 8 //描述 9 HtmlMeta meta2 = new HtmlMeta(); 10 meta2.Name = "des

Yii2.0 是如何引入js和css

今天上午没事,重拾知识,此处是关于yii2.0是如何引入js 和css 使用总结 学习连接1:http://www.yiiframework.com/doc-2.0/guide-output-client-scripts.html 学习连接2:http://www.manks.top/article/yii2_load_js_css_in_end 学习连接3:http://www.yii-china.com/post/detail/39.html 问题:在开发web框架中,使用Yii2.0框架,

20150203+JS巩固与加强1-01

JavaScript巩固与加强一 第一天:JavaScript回顾+函数+作用域链+script代码执行+数组 两链:作用域链+原型链 一包:闭包 第二天:事件编程 第三天和第四天:面向对象+贪吃蛇游戏开发 第五天:正则表达式 一.简介 1.为什么需要JavaScript? 2.什么是JavaScript JavaScript 是网景(Netscape)公司开发的一种基于客户端浏览器.面向(基于)对象.事件驱动式的网页脚本语言. 客户端浏览器: HTML.CSS.JavaScript客户端语言

设为首页收藏本站js代码(引自ecshop模板堂(ecmoban.com)

http://help.ecmoban.com/article-1596.html 设为首页 和 收藏本站js代码 兼容IE,chrome,ff,360等 将以下代码放到首页 或者新建js文件 <script type="text/javascript"> //设为首页 www.ecmoban.com function SetHome(obj,url){ try{ obj.style.behavior='url(#default#homepage)'; obj.setHom