IE8에서 Array.indexOf() 함수 실패
배열에 있는 요소의 인덱스를 확인하는 데 사용되는 indexOf() 함수 , 9 이전 Internet Explorer(IE) 버전에서는 문제가 발생합니다. 특히 IE8에서는 이 기능이 예상대로 작동하지 않아 개발자가 당황하게 됩니다.
근본 원인을 추적하려면 다음 기능을 고려하세요. Opera, Firefox, Chrome 등의 브라우저에서 작동합니다.
function CheckMe() { var allowed = new Array('docx','xls','xlsx', 'mp3', 'mp4', '3gp', 'sis', 'sisx', 'mp3', 'wav', 'mid', 'amr', 'jpg', 'gif', 'png', 'jpeg', 'txt', 'pdf', 'doc', 'rtf', 'thm', 'rar', 'zip', 'htm', 'html', 'css', 'swf', 'jar', 'nth', 'aac', 'cab', 'wgz'); var fileinput=document.getElementById('f'); var ext = fileinput.value.toLowerCase().split('.'); if (allowed.indexOf(ext[1]) == -1) {...
함수가 if (allowed.indexOf(ext[1]) == -1) 조건문을 실행하려고 하면 오류가 발생합니다. . IE8에서는 indexOf()가 배열에 지원되지 않아 코드가 실패하게 됩니다.
이 문제를 해결하려면 다음 수정 사항을 구현할 수 있습니다.
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; }; }
이 수정 사항은 indexOf를 추가합니다. () 메소드가 존재하지 않는 경우 Array 프로토타입에 추가합니다. 특히 누락된 IE8 이하를 대상으로 합니다. 이 수정 사항을 통합하면 CheckMe() 함수가 의도한 대로 작동하여 IE8의 문제가 해결됩니다.
위 내용은 IE8에서 `Array.indexOf()`가 실패하는 이유는 무엇이며 어떻게 해결할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!