最近旧IEブラウザまで対応する案件は少なくなっていますが、稀に対応しなければいけない事があります。
モダンブラウザで開発して、IEで確認したらJSエラーが発生しているって事結構あります・・・
エラーが出えた場合、ロジックをまるっと書き抱えないといけない事がありますが、30行程度のコードをスクリプトの最初に追加するだけでエラーを回避できる場合もあります。
Array.map()をIE8以下で使うとこんなエラーが
エラー内容
エラー: オブジェクトでサポートされていないプロパティまたはメソッドです。
Array.map()を使うスクリプトをIE8以下で開くとエラーが起こります。
ですが、そんな下位IEのエラーも綺麗さっぱり無くす事ができます。
エラーとなるブラウザ
IE8以下
エラーが起きるスクリプト
var numbers = [1, 4, 9]; var roots = numbers.map(Math.sqrt);
追加するコード
if(!Array.prototype.map){
Array.prototype.map = function(callback, thisArg){
var T, A, k;
if(this == null){
throw new TypeError(' this is null or not defined');
}
var O = Object(this);
var len = O.length >>> 0;
if(typeof callback !== 'function'){
throw new TypeError(callback + ' is not a function');
}
if(arguments.length > 1){
T = thisArg;
}
A = new Array(len);
k = 0;
while(k < len){
var kValue, mappedValue;
if(k in O){
kValue = O[k];
mappedValue = callback.call(T, kValue, k, O);
A[k] = mappedValue;
}
k++;
}
return A;
};
}
この28行のコードをスクリプト上部に追加するだけで、 IE7とIE8でエラーが無くなります。

