Javascript substr方法在某些浏览器下行为出现BUG的补丁代码

主要思路是使用兼容性和稳定性都保持一致的substring方法重写/覆盖substr

/**
 * String.substr() bug fix
 * @param start
 * @param len
 * @returns
 */
String.prototype.substr = function(start, len) {
    var str = this;
    var l = str.length;
    if(start >= l)
        return '';
    if(arguments.length == 1) {
        if(start >= 0 && start < l)
            return str.substring(start);
        if(start < -length)
            return str;
        if(start<0 && start >= -l)
            return str.substring(l + start);
    }
    if(len <= 0)
        return '';
    if(start >= 0 && start < l) {
        if(len > l - start)
            len = l - start;
        return str.substring(start, start + len);
    }
    if(start < -l) {
        if(len >= l)
            return str;
        return str.substring(0, len);
    }
    if(start<0 && start >= -l) {
        if(len >= -start)
            return str.substring(l+start);
        return str.substring(l+start, l+start+len);
    }
    return '';
};

 

posted @ 2014-01-16 14:48  XBOY2012  阅读(457)  评论(0编辑  收藏  举报