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.
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]-->
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 != 'function') { 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!