JS:旧IEでJSエラー時の対処方 Array.indexOf()編

JS:旧IEでJSエラー時の対処方 Array.indexOf()編

author : koki

publish date :

最近旧IEブラウザまで対応する案件は少なくなっていますが、稀に対応しなければいけない事があります。
モダンブラウザで開発して、IEで確認したらJSエラーが発生しているって事結構あります・・・
エラーが出えた場合、ロジックをまるっと書き抱えないといけない事がありますが、10行程度のコードをスクリプトの最初に追加するだけでエラーを回避できる場合もあります。

Array.indexOf()をIE8以下で使うとこんなエラーが

エラー内容

エラー: オブジェクトでサポートされていないプロパティまたはメソッドです。

Array.indexOf()を使うスクリプトをIE8以下で開くとエラーが起こります。
ですが、そんな下位IEのエラーも綺麗さっぱり無くす事ができます。

エラーとなるブラウザ

IE8以下

エラーが起きるスクリプト

var arr = ['a', 'b'];
document.write(arr.indexOf('b'));

追加するコード

if(!Array.prototype.indexOf){
	Array.prototype.indexOf = function(obj, start){
		for(var i = (start || 0), j = this.length; i < j; i++){
			if(this[i] === obj){return i;}
		}
		return -1;
	}
}
  • 2017年01月28日修正しました。

この8行のコードをスクリプト上部に追加するだけで、エラーが無くなります。

サンプルページ

サンプルページをjsdo.itで公開しているので、IE8以下で確認してみてください。