其实本来只是打算颠倒数组中元素的顺序的,当时用了sort。虽然本来就不是最佳解决方案,但是还是用了,并且华丽丽的在iphone中没干活。
查了半天说Safari不支持排序函数,本来用reverse替换掉sort也就罢了,你看我这小暴脾气,非要搞一搞。
代码虽说是网上找的,其实思路给我的差不多的,就是重写sort自己排序一下,不过网上顺便看到了IE9里也很挫,感觉稍微平衡了一点。
上代码:
;(function(w){
if(/msie|applewebkit.+safari/i.test(w.navigator.userAgent)){
var _sort = Array.prototype.sort;
Array.prototype.sort = function(fn){
if(!!fn && typeof fn === 'function'){
if(this.length < 2) return this;
var i = 0, j = i + 1, l = this.length, tmp, r = false, t = 0;
for(; i < l; i++){
for(j = i + 1; j < l; j++){
t = fn.call(this, this[i], this[j]);
r = (typeof t === 'number' ? t : !!t ? 1 : 0) > 0 ? true : false;
if(r){
tmp = this[i];
this[i] = this[j];
this[j] = tmp;
}
}
}
return this;
} else {
return _sort.call(this);
}
};
}
})(window);
都快被坑习惯了呢/(ㄒoㄒ)/~~