Anomali Fungsi indexOf dalam IE8 untuk Objek Tatasusunan
Fungsi JavaScript yang disediakan, direka untuk mengesahkan sambungan fail, menghadapi isu khususnya dalam IE8 semasa pelaksanaan pernyataan if ( allowed.indexOf(ext[1]) == -1). Kegagalan ini menimbulkan persoalan mengapa fungsi indexOf tidak dilaksanakan dengan betul dalam IE8.
Fungsi indexOf, kaedah asli dalam tatasusunan JavaScript, mengembalikan indeks kejadian pertama elemen tertentu dalam tatasusunan. Walau bagaimanapun, dalam versi Internet Explorer pra-IE9, fungsi ini tidak ditakrifkan untuk tatasusunan. Akibatnya, percubaan untuk menggunakan indexOf pada tatasusunan dalam IE8 mencetuskan ralat.
Penyelesaian
Untuk menangani percanggahan ini, polyfill boleh digunakan sebelum menggunakan indexOf fungsi. Polyfill ialah coretan kod yang memberikan keserasian dengan versi penyemak imbas yang lebih lama. Dalam keadaan ini, polyfill untuk Array.prototype.indexOf boleh dilaksanakan seperti berikut:
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; }; }
Melaksanakan polyfill ini memastikan bahawa fungsi indexOf tersedia dalam versi IE yang lebih lama, membenarkan fungsi JavaScript beroperasi seperti yang dimaksudkan .
Atas ialah kandungan terperinci Mengapa indexOf tidak berfungsi dengan betul dengan Array dalam IE8?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!