IE8 SCRIPT438: 对象不支持“indexOf”属性或方法

1   a.js


   var reportEdit = (function() {
         $(function() {

               extendIndexOf();

               save();
         });

        function save(){

         $("#reportForm").submitFormGetJson({

            url : "/ideprt/save",
            wait : true,
            callback : function(data) {
                if (data.indexOf("fail") > -1) {   //IE8不支持indexOf, js中Array的indexOf方法在js1.6版本中才给予了实现,ie7,8中只实现到了js1.3版本,chrome为js1.7版本,ff为js1.8版本。
                    msgUtil.alert("失败!");
                }else if(data.indexOf("repeat2032") > -1){
                     msgUtil.alert("成功!");
                }
            }
        });

    }

 

    //IE8不支持indexOf,扩展indexOf
    function extendIndexOf(){
        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;
          };
        }
    }


    return{

          save: save

     }

 })()


2  解决


在使用indexOf方法前,执行一下下面的js, 原理就是如果发现数组没有indexOf方法,会添加上这个方法。
        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;
          };
        }
 

         

你可能感兴趣的:(IE8兼容)