解决 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中文网其他相关文章!