Ie8's Missing indexOf for Arrays: A Solution
Dalam fungsi JavaScript biasa ini, penggunaan Array.prototype.indexOf dalam keadaan jika ( allowed.indexOf(ext[1]) == -1) menyebabkan masalah dalam IE8. Untuk memahami sebabnya, mari kita mendalami tingkah laku unik IE8.
IE8, tidak seperti penyemak imbas moden seperti Opera, Firefox dan Chrome, tidak mempunyai kaedah indexOf untuk tatasusunan. Peninggalan ini berpunca daripada fakta bahawa standard ECMAScript 5, yang memperkenalkan kaedah indexOf, tidak disokong oleh IE8. Akibatnya, percubaan untuk menggunakan kaedah indexOf pada tatasusunan akan mengakibatkan ralat dalam IE8.
Untuk menyelesaikan isu ini, kami boleh menggunakan strategi 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; }; }
Coretan kod ini , diperoleh daripada MDN, mentakrifkan polyfill untuk kaedah indexOf. Ia memastikan bahawa Array.prototype.indexOf tersedia dalam semua persekitaran, termasuk IE8. Dengan menambahkan kod ini sebelum menggunakan indexOf pada tatasusunan, kami boleh memastikan bahawa ia akan berfungsi dengan betul dalam semua penyemak imbas, termasuk IE8.
Dengan melaksanakan penyelesaian ini, fungsi asal akan berfungsi dengan lancar dalam IE8, membolehkan pembangun menyemak sama ada sambungan fail tertentu dibenarkan dalam fail yang dipilih pengguna.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membetulkan Isu Kaedah `indexOf` untuk Tatasusunan dalam IE8?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!