为了账号安全,请及时绑定邮箱和手机立即绑定

如何为InternetExplorer浏览器修复JavaScript中的Array indexOf

如何为InternetExplorer浏览器修复JavaScript中的Array indexOf

尚方宝剑之说 2019-06-19 16:01:58
如何为InternetExplorer浏览器修复JavaScript中的Array indexOf如果您使用过任何长度的JavaScript,那么您就知道InternetExplorer没有为Array.Prototype.indexOf()[包括InternetExplorer 8]实现ECMAScript函数。这不是一个大问题,因为您可以使用以下代码扩展页面上的功能。Array.prototype.indexOf = function(obj, start) {      for (var i = (start || 0), j = this.length; i < j; i++) {          if (this[i] === obj) { return i; }      }      return -1;}我应该在什么时候实现这一点?我是否应该用下面的检查将它包装在我的所有页面上,检查Prototype函数是否存在,如果不存在,那么继续扩展Array Prototype吗?if (!Array.prototype.indexOf) {     // Implement function here}或者进行浏览器检查,如果它是InternetExplorer,那么只需实现它?//Pseudo-codeif (browser == IE Style Browser) {      // Implement function here}
查看完整描述

3 回答

?
largeQ

TA贡献2039条经验 获得超7个赞

这样做.。

if (!Array.prototype.indexOf) {}

MDC推荐的兼容性.

一般来说,浏览器检测代码是一个大的不-不。


查看完整回答
反对 回复 2019-06-19
?
梦里花落0921

TA贡献1772条经验 获得超6个赞

或者,您可以使用jQuery1.2 inArray函数,它应该跨浏览器工作:

jQuery.inArray( value, array [, fromIndex ] )


查看完整回答
反对 回复 2019-06-19
?
繁星淼淼

TA贡献1775条经验 获得超11个赞

那么,完整的代码将是:

if (!Array.prototype.indexOf) {
    Array.prototype.indexOf = function(obj, start) {
         for (var i = (start || 0), j = this.length; i < j; i++) {
             if (this[i] === obj) { return i; }
         }
         return -1;
    }}

要获得真正彻底的答案和代码,以及其他数组函数,请查看堆栈溢出问题。在InternetExplorer(indexOf、forEach等)中修复JavaScriptArray函数.


查看完整回答
反对 回复 2019-06-19
  • 3 回答
  • 0 关注
  • 452 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信