Maison >interface Web >js tutoriel >Que dois-je faire si jquery n'est pas compatible avec le navigateur IE8 ?

Que dois-je faire si jquery n'est pas compatible avec le navigateur IE8 ?

coldplay.xixi
coldplay.xixioriginal
2020-12-24 10:12:242635parcourir

La solution pour la compatibilité jquery qui ne prend pas en charge les navigateurs IE8 : 1. Utilisez l'instruction [266c419352a525843049eb7155ebf872] peut être utilisé dans Effectuer certaines opérations compatibles en mode IE8 ; 2. Ajoutez une méthode forEach personnalisée pour les navigateurs qui ne prennent pas en charge forEach.

Que dois-je faire si jquery n'est pas compatible avec le navigateur IE8 ?

L'environnement d'exploitation de ce tutoriel : système windows7, version jquery3.2.1, ordinateur DELL G3.

Recommandé : Tutoriel vidéo jquery

La solution pour la compatibilité jquery ne prenant pas en charge le navigateur ie8 :

1 , IE8 ne prend pas en charge la solution de version jQuery

Chargez la version correspondante de jQuery en déterminant la version du navigateur IE

Utilisez l'instruction be2de7c842497a34fd56bcd3920a2343 Seul IE8 peut reconnaître 1b771f47d72d900ba74308aee59557f0 Certaines opérations compatibles peuvent être effectuées en mode IE8. Le code est le suivant :

<script type="text/javascript" src="<%=path%>/js/jquery-3.1.1.min.js"></script>
<!--[if IE 8]>
<script type="text/javascript" src="<%=path%>/js/jquery-1.9.1.min.js"></script>
<![endif]-->

De cette façon, lors du passage à IE8, la version inférieure de jQuery écrasera la version supérieure de jQuery. Si vous devez ajuster le style de certains éléments sous IE8, il est préférable de placer le code JS en bas de la page (et de faire attention s'il existe des styles en ligne), sinon les styles définis pour certains contenus chargés dynamiquement pourraient ne pas prendre effet.

2. IE8 ne prend pas en charge la solution forEach

Ajoutez une méthode forEach personnalisée pour les navigateurs qui ne prennent pas en charge forEach

Le code est le suivant :

if (typeof Array.prototype.forEach != &#39;function&#39;) {
    Array.prototype.forEach = function (callback) {
        for (var i = 0; i < this.length; i++) {
            callback.apply(this, [this[i], i, this]);
        }
    };
}

S'il s'agit d'un plug-in jQuery importé, vous pouvez mettre ce code au début du contenu du plug-in, afin qu'aucune erreur ne soit signalée lors de l'exécution de la méthode forEach sous IE8.

3. IE8 ne prend pas en charge la solution cartographique

Ajouter une méthode forEach personnalisée

if (!Array.prototype.map) {
    Array.prototype.map = function(callback, thisArg) {
        var T, A, k;
        if (this == null) {
            throw new TypeError(" this is null or not defined");
        }
        // 1. Let O be the result of calling ToObject passing the |this| value as the argument.
        var O = Object(this);
        // 2. Let lenValue be the result of calling the Get internal method of O with the argument "length".
        // 3. Let len be ToUint32(lenValue).
        var len = O.length >>> 0;
        // 4. If IsCallable(callback) is false, throw a TypeError exception.
        // See: http://es5.github.com/#x9.11
        if (typeof callback !== "function") {
            throw new TypeError(callback + " is not a function");
        }
        // 5. If thisArg was supplied, let T be thisArg; else let T be undefined.
        if (thisArg) {
            T = thisArg;
        }
        // 6. Let A be a new array created as if by the expression new Array(len) where Array is
        // the standard built-in constructor with that name and len is the value of len.
        A = new Array(len);
        // 7. Let k be 0
        k = 0;
        // 8. Repeat, while k < len
        while(k < len) {
            var kValue, mappedValue;
            // a. Let Pk be ToString(k).
            //   This is implicit for LHS operands of the in operator
            // b. Let kPresent be the result of calling the HasProperty internal method of O with argument Pk.
            //   This step can be combined with c
            // c. If kPresent is true, then
            if (k in O) {
                // i. Let kValue be the result of calling the Get internal method of O with argument Pk.
                kValue = O[ k ];
                // ii. Let mappedValue be the result of calling the Call internal method of callback
                // with T as the this value and argument list containing kValue, k, and O.
                mappedValue = callback.call(T, kValue, k, O);
                // iii. Call the DefineOwnProperty internal method of A with arguments
                // Pk, Property Descriptor {Value: mappedValue, : true, Enumerable: true, Configurable: true},
                // and false.
                // In browsers that support Object.defineProperty, use the following:
                // Object.defineProperty(A, Pk, { value: mappedValue, writable: true, enumerable: true, configurable: true });
                // For best browser support, use the following:
                A[ k ] = mappedValue;
            }
            // d. Increase k by 1.
            k++;
        }
        // 9. return A
        return A;
    };
}

Recommandations d'apprentissage gratuites associées : Tutoriel vidéo js

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn