IE の互換性の問題 (継続的に補足されます)

1. IE の時刻形式は NaN を認識します。

理由: IE は yyyy-MM-dd 形式を認識できないため、yyyy/MM/dd に変換する必要があります。

//正则替换
replace(new RegExp(/-/gm) ,"/")

2. IE10 - let const を宣言できません

3. IE8はフィルターと互換性がありません

if (!Array.prototype.filter)
{
    Array.prototype.filter = function(fun /*, thisp */)
    {
        "use strict";

        if (this === void 0 || this === null)
            throw new TypeError();

        var t = Object(this);
        var len = t.length >>> 0;
        if (typeof fun !== "function")
            throw new TypeError();

        var res = [];
        var thisp = arguments[1];
        for (var i = 0; i < len; i++)
        {
            if (i in t)
            {
                var val = t[i]; // in case fun mutates this
                if (fun.call(thisp, val, i, t))
                    res.push(val);
            }
        }

        return res;
    };
}

4. IE10 は JQ の ajax と互換性がありません。

// 全局声明以下代码
jQuery.support.cors = true;

5. IE が @media と互換性がある必要がある場合、CSS ファイルに CSS を書き込む必要があり、スタイルでの書き込みは無効です

6. 背景サイズ: カバーは IE では無効です

-ms-filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='dist/images/registerBg.png',sizingMethod=scale); 
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='dist/images/registerBg.png',sizingMethod=scale);

7. イベント監視は完全な互換性があります

/**
 * 添加事件监听 兼容IE8
 * @param el
 * @param type
 * @param fn
 */
function addListener(el, type, fn) {
    if (el.addEventListener) {
        el.addEventListener(type, fn, false);
    } else if (el.attachEvent) {
        el.attachEvent('on' + type, fn);
    }
}

/**
 * 移除事件监听 兼容IE8
 * @param el
 * @param type
 * @param fn
 */
function removeListener(el, type, fn) {
    if (el.removeEventListener) {
        el.removeEventListener(type, fn, false);
    } else if (el.detachEvent) {
        el.detachEvent('on' + type, fn);
    }
}

8. IE8は配列の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;
    };
}

 

おすすめ

転載: blog.csdn.net/QiZi_Zpl/article/details/105763690