资讯专栏INFORMATION COLUMN

JavaScript常用脚本集锦8

blankyao / 2745人阅读

摘要:进制为代码来源通过标签解析通过标签解析标签参数是字符串,解析的目标通过测试创建一个标签将赋值给标签的属性。协议主机名称端口查询字符串查询参数文件名哈希参数路径相对路径路径片段代码来源

图片预加载
// 更新:
// 05.27: 1、保证回调执行顺序:error > ready > load;2、回调函数this指向img本身
// 04-02: 1、增加图片完全加载后的回调 2、提高性能

/**
 * 图片头数据加载就绪事件 - 更快获取图片尺寸
 * @version 2011.05.27
 * @author  TangBin(PS:我不是作者,我只是代码的搬运工)
 * @see     http://www.planeart.cn/?p=1121
 * @param   {String}    图片路径
 * @param   {Function}  尺寸就绪
 * @param   {Function}  加载完毕 (可选)
 * @param   {Function}  加载错误 (可选)
 * @example imgReady("http://www.google.com.hk/intl/zh-CN/images/logo_cn.png", function () {
        alert("size ready: width=" + this.width + "; height=" + this.height);
    });
 */
var imgReady = (function () {
  /*list用来存放onready的函数队列,intervalID用来存放定时器的引用*/
    var list = [], intervalId = null,

    // 用来执行队列
    tick = function () {
        var i = 0;
        for (; i < list.length; i++) {
          /*end用来表示onready函数是否执行完必,splice用来删除队列中的项目*/
            list[i].end ? list.splice(i--, 1) : list[i]();
        };
        //队列全部执行完成后的清除工作。
        !list.length && stop();
    },

    // 停止所有定时器队列,释放内存中的引用
    stop = function () {
        clearInterval(intervalId);
        intervalId = null;
    };
  /**
  * 闭包
  * @param:url  图片的路径
  * @param:ready 图片尺寸就绪的回调函数
  * @param: load 图片加载完毕的回调函数
  * @param: err 图片加载出错的回调函数
  *
  */
    return function (url, ready, load, error) {
        var onready, width, height, newWidth, newHeight,
              img = new Image();

        img.src = url;

        // 如果图片被缓存,则直接返回缓存数据
        if (img.complete) {
            ready.call(img);
            load && load.call(img);
            return;
        };

        width = img.width;
        height = img.height;

        // 加载错误后的事件
        img.onerror = function () {
            error && error.call(img);
            onready.end = true;
            img = img.onload = img.onerror = null;
        };

        // 图片尺寸就绪
        onready = function () {
            newWidth = img.width;
            newHeight = img.height;
            if (newWidth !== width || newHeight !== height ||
                // 如果图片已经在其他地方加载可使用面积检测
                newWidth * newHeight > 1024
            ) {
                ready.call(img);
                onready.end = true;
            };
        };
        onready();

        // 完全加载完毕的事件
        img.onload = function () {
            // onload在定时器时间差范围内可能比onready快
            // 这里进行检查并保证onready优先执行
            !onready.end && onready();

            load && load.call(img);

            // IE gif动画会循环执行onload,置空onload即可
            img = img.onload = img.onerror = null;
        };

        // 加入队列中定期执行
        if (!onready.end) {
            list.push(onready);
            // 无论何时只允许出现一个定时器,减少浏览器性能损耗
            if (intervalId === null) intervalId = setInterval(tick, 40);
        };
    };
})();

代码来源:https://gist.github.com/hehongwei44/5ab040cf3a8b27311d72

js高级截取字符串功能
/**
*
* @descrition: 对字符串进行截取,包括普通字符和中文字符
* @param : str ->待截取的字符串
* @param : len ->要截取的长度
* 
* 比如cutstr("hello",2)->he...  cutstr("您好呀",4)->您好...
* 优先选择后台进行字符串截取,后css截取,最后js截取
*/
var cutstr = function(str, len) {
        var temp,
            icount = 0,
            patrn = /[^x00-xff]/g,    //中文字符匹配
            strre = "";

        for (var k = 0; k < str.length; k++) {
            if (icount < len ) {
                temp = str.substr(k, 1);
                if (temp.match(patrn) == null) {
                    icount = icount + 1;
                } else {
                    icount = icount + 2;
                }
                strre += temp;
            } else {
                break
            }
        }
        return strre + "...";
    }

代码来源:https://gist.github.com/hehongwei44/be3027aeb48ab978a039

对javascript中String类型的拓展
/**
*
* @desccrition: 对String类型去除空格的拓展
* @dir : 被去除空格所在的位置
* @test: ie6-9 chrome firefox
*/

String.prototype.trim = function(dir){
        switch (dir) {
            case 0 : //去左边的空格
                return this.replace(/(^s*)/g,"");
                break;
            case 1 : //去右边的空格
                return this.replace(/(s*$)/g,"");
                break;
            case 2 : //去掉所有的空格
                return this.replace(/(s*)/g,"");
                break;
            default : //去掉两边的空格
                return this.replace(/(^s*)|(s*$)/g,"");
        }
}

代码来源:https://gist.github.com/hehongwei44/3e167cfcda47d4c8051a

生成随机字符串(数字+字母),长度自定义
/**
* @function:generateRandomAlphaNum->生成随机的字符串
* @param:len->生存随机字符串的长度
* @tdd->IE6-9 chrome Firefox通过测试
* 
*/
function generateRandomAlphaNum(len) {
    var rdmString = "";
    //toSting接受的参数表示进制,默认为10进制。36进制为0-9 a-z
    for (; rdmString.length < len; rdmString += Math.random().toString(36).substr(2));
    return rdmString.substr(0, len);
}

代码来源:https://gist.github.com/hehongwei44/62d64830afa07ddac65f

js通过a标签解析url
/*
* @function: 通过a标签解析url标签
* @param:url  url参数是字符串,解析的目标
  通过IE6-9 chrome  Firefox测试
*
*/

function parseURL(url) {
    //创建一个a标签
    var a =  document.createElement("a");
    //将url赋值给标签的href属性。
    a.href = url;
    return {
        source: url,
        protocol: a.protocol.replace(":",""), //协议
        host: a.hostname,   //主机名称
        port: a.port,   //端口
        query: a.search,  //查询字符串
        params: (function(){  //查询参数
            var ret = {},
                    seg = a.search.replace(/^?/,"").split("&"),
                    len = seg.length, i = 0, s;
            for (;i

代码来源:https://gist.github.com/hehongwei44/46d68bcb75df8cd0495b

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/85487.html

相关文章

  • JavaScript常用脚本集锦1

    摘要:初始化参数可选参数,必填参数可选,只有在请求时需要参数可选回调函数可选参数可选,默认为参数可选,默认为创建引擎对象打开发送普通文本接收文档将字符串转换为对象最后,说明一下此函数的用法。即等待与成功回调,后标志位置为。 jquery限制文本框只能输入数字 jquery限制文本框只能输入数字,兼容IE、chrome、FF(表现效果不一样),示例代码如下: $(input).keyup(...

    ygyooo 评论0 收藏0
  • JavaScript常用脚本集锦7

    摘要:将加法和加上校验位能被整除。下面分别分析出生日期和校验位检查生日日期是否正确输入的身份证号里出生日期不对将位身份证转成位校验位按照的规定生成,可以认为是数字。校验位按照的规定生成,可以认为是数字。表示全部为中文为不全是中文,或没有中文。 判断是否是合理的银行卡卡号 //Description: 银行卡号Luhm校验 //Luhm校验规则:16位银行卡号(19位通用): // 1.将...

    lindroid 评论0 收藏0
  • JavaScript常用脚本集锦2

    摘要:把中的伪数组转换为真数组在中,函数中的隐藏变量和用获得的元素集合都不是真正的数组,不能使用等方法,在有这种需要的时候只能先转换为真正的数组。检测元素是否支持某个属性代码用法创建和使用命名空间使用方式 把JavaScript中的伪数组转换为真数组 在 JavaScript 中, 函数中的隐藏变量 arguments 和用 getElementsByTagName 获得的元素集合(Nod...

    xialong 评论0 收藏0
  • JavaScript常用脚本集锦5

    摘要:代码来源一些常用的操作方法介绍查找相关元素的前一个兄弟元素的方法。查找元素指定层级的父元素。 DOM操作的增强版功能函数 /** * 将一个DOM节点、HTML字符串混合型参数 * 转化为原生的DOM节点数组 * * */ function checkElem(a) { var r = []; if (a.constructor != Array) { ...

    joywek 评论0 收藏0
  • JavaScript常用脚本集锦3

    通过数组,拓展字符串拼接容易导致性能的问题 function StringBuffer() { this.__strings__ = new Array(); } StringBuffer.prototype.append = function (str) { this.__strings__.push(str); return this; } StringBuffer....

    dack 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<