Наконец-то я нашел обходной путь, в IE8 отсутствует какая-то функция для объекта Array, функция map (), используемая при столкновении jquery, поэтому я добавил функцию map в свой объект Array этот код из библиотеки JavaScript ddr-ECMA5:
var __isCallable = (function(){
var __sortCase = (function(){
try {
[].sort('abc');
return false;
} catch(ex) {
return true;
}
})();
return function(obj){
if( typeof obj === 'function' )
return true;
if( typeof obj !== 'object' )
return false;
if( obj instanceof Function || obj instanceof RegExp )
return true;
if( __sortCase ) {
try {
[].sort(obj);
return true;
} catch(ex){ /* nothing to do */ }
}
return false;
};
})();
/// IE8 support
var AddArrayMapFunction = function() {
var $AP = Array.prototype;
$AP.map || ($AP.map = function(callback) {
if( !__isCallable(callback) )
throw new TypeError( callback + " is not a callable object" );
var thisArg = arguments[1],
len = this.length,
results = new Array(len);
for(var i=0; i < len; ++i) {
if( this.hasOwnProperty(String(i)) ) {
results[i] = callback.call(thisArg, this[i], i, this);
}
}
return results;
});
}
// then just call, when you need to use the collision lib
AddArrayMapFunction();
У этого есть побочный эффект, он добавляет дополнительный элемент в ваш массив, функцию "map", т.е.
myArray = ["a","b","c"];
// after add the function map() your array will look like
["a","b","c",map:function(){...}]
Надеюсь, это поможет, если кто-то еще захочет поддерживать библиотеку jquery - collision в IE8, это не лучший подход, но это хорошая работа.