最近旧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でエラーが無くなります。