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
Libérer: 2023-01-04 09:37:56
original
2576 Les gens l'ont consulté

La solution pour la compatibilité jquery qui ne prend pas en charge les navigateurs IE8 : 1. Utilisez l'instruction [] 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 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]-->
Copier après la connexion

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]);
        }
    };
}
Copier après la connexion

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;
    };
}
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal