>웹 프론트엔드 >JS 튜토리얼 >IE8의 배열에 대한 'indexOf' 메서드 문제를 어떻게 해결할 수 있나요?

IE8의 배열에 대한 'indexOf' 메서드 문제를 어떻게 해결할 수 있나요?

DDD
DDD원래의
2024-11-25 03:34:14653검색

How Can I Fix the `indexOf` Method Issue for Arrays in IE8?

IE8의 누락된 배열용 indexOf: 솔루션

이 일반적인 JavaScript 함수에서는 조건 내에서 Array.prototype.indexOf를 사용합니다. ( allowed.indexOf(ext[1]) == -1) IE8에서 문제가 발생합니다. 그 이유를 이해하기 위해 IE8의 고유한 동작을 살펴보겠습니다.

IE8은 Opera, Firefox, Chrome과 같은 최신 브라우저와 달리 배열에 대한 indexOf 메서드가 없습니다. 이러한 생략은 indexOf 메소드를 도입한 ECMAScript 5 표준이 IE8에서 지원되지 않는다는 사실에서 비롯됩니다. 결과적으로 배열에서 indexOf 메서드를 사용하려고 하면 IE8에서 오류가 발생합니다.

이 문제를 해결하려면 다음 전략을 채택할 수 있습니다.

if (!Array.prototype.indexOf) {
  Array.prototype.indexOf = function (elt /*, from*/) {
    var len = this.length >>> 0;

    var from = Number(arguments[1]) || 0;
    from = from < 0 ? Math.ceil(from) : Math.floor(from);
    if (from < 0) from += len;

    for (; from < len; from++) {
      if (from in this && this[from] === elt) return from;
    }
    return -1;
  };
}

이 코드 조각 MDN에서 가져온 는 indexOf 메서드에 대한 폴리필을 정의합니다. IE8을 포함한 모든 환경에서 Array.prototype.indexOf를 사용할 수 있도록 보장합니다. 배열에서 indexOf를 사용하기 전에 이 코드를 추가하면 IE8을 포함한 모든 브라우저에서 올바르게 작동하는지 확인할 수 있습니다.

이 솔루션을 구현하면 원래 기능이 IE8에서 원활하게 작동하므로 개발자는 다음을 확인할 수 있습니다. 사용자가 선택한 파일에는 특정 파일 확장자가 허용됩니다.

위 내용은 IE8의 배열에 대한 'indexOf' 메서드 문제를 어떻게 해결할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.