首页  >  文章  >  web前端  >  为什么 `Array.indexOf()` 在 IE8 中不起作用,如何修复它?

为什么 `Array.indexOf()` 在 IE8 中不起作用,如何修复它?

Barbara Streisand
Barbara Streisand原创
2024-11-27 06:24:11897浏览

Why Doesn't `Array.indexOf()` Work in IE8, and How Can I Fix It?

解决 IE8 中的 Array.indexOf() 问题

indexOf() 方法在现代浏览器中广泛用于搜索数组中的元素。但是,它可能会在旧版本的 Internet Explorer 中遇到问题。

由于缺少 indexOf() 而在 IE8 中失败的示例脚本是:

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) 
    {
        document.getElementById('uploadsec').innerHTML = document.getElementById('uploadsec').innerHTML;
        alert('This file type is not allowed!');
    }
}

IE8 的解决方案兼容性

要在 IE8 中解决此问题,需要显式定义 indexOf() 函数对于使用 polyfill 的 Array 对象:

if (!Array.prototype.indexOf) {
  Array.prototype.indexOf = function(elt /*, from*/) {
    // Code from MDN or another compatible implementation
  };
}

实现此 polyfill 后,indexOf() 方法应该在 IE8 和其他可能缺乏本机支持的浏览器中按预期运行。

以上是为什么 `Array.indexOf()` 在 IE8 中不起作用,如何修复它?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn