javascirpt 的一些在IE下不支持的函数小结

看红宝书看了两天,发现原来好多js的方法都是在IE9+才支持,连IE8都不支持。。想要实现这些方法只能自己写,总结下。
// ============   isArray  ===============//			
// isArray
function isArray(value){
	return Object.prototype.toString.call(value) == "[object Array]";
}
var arr = [1,2,3,4,5];
alert(isArray(arr)); // IE8 及以下不支持


// ============   filter 等  ===============//	
// 数组的一些方法  every(), filter(), forEach(), map(), some()
// IE8 及以下不支持
// 解决办法,以filter为例,自己写一个filter
if (!Array.prototype.filter) {
    Array.prototype.filter = function(fun /*, thisp*/){
        var len = this.length;
        if (typeof fun != "function"){
            throw new TypeError();
        }
        var res = new Array();
        var thisp = arguments[1];
        for (var i = 0; i < len; i++){
            if (i in this){
                var val = this[i]; // in case fun mutates this
                if (fun.call(thisp, val, i, this)) {
                    res.push(val);
                }
            }
        }
        return res;
    };
}

var numbers = [1,2,3,4,5,6];
var filterResult = numbers.filter(function(item, inde, array){
	return (item>2);
});
alert(filterResult); // 3,4,5,6



// ============   Date.now()  ===============//	
// Date.now(); IE8及以下不支持,只能自己写一个解决
if(!Date.now){
	Date.now = function(){
		return new Date().valueOf();
	}
}
alert(Date.now());




// ============   stringValue[1]  ===============//
// 在IE7 及以下版本显示  undefined	
var stringValue = "hello world";
alert(stringValue[1]);



// ============   trim()  ===============//
// 在IE8 及以下版本无效,需要自己写	
String.prototype.trim = function(){
	return this.replace(/(^\s*)(\s*$)/g, "");
};

var stringValue2 = "   hello world  ";
alert(stringValue2.trim());

阅读更多
上一篇relatedTarget, fromElement, toElement
想对作者说点什么? 我来说一句

javascript日期控件四

2011年07月25日 5KB 下载

解决IE下不支持placeholder属性

2016年06月07日 34KB 下载

没有更多推荐了,返回首页

关闭
关闭