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 ‘‘;
};

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。