J'ai une fonction ci-dessous qui fonctionne très bien dans Chrome, mais sa donne l'erreur ci-dessous dans IE10 SCRIPT438: Object doesn't support property or method 'endsWith'
function getUrlParameter(URL, param){
var paramTokens = URL.slice(URL.indexOf('?') + 1).split('&');
for (var i = 0; i < paramTokens.length; i++) {
var urlParams = paramTokens[i].split('=');
if (urlParams[0].endsWith(param)) {
return urlParams[1];
}
}
}
Quelqu'un peut-il me dire ce qui ne va pas avec cette fonction?
Mis en œuvre endsWith
comme ci-dessous
String.prototype.endsWith = function(pattern) {
var d = this.length - pattern.length;
return d >= 0 && this.lastIndexOf(pattern) === d;
};
Vous devez utiliser le code suivant pour implémenter endsWith
dans les navigateurs qui ne le prennent pas en charge:
if (!String.prototype.endsWith) {
String.prototype.endsWith = function(search, this_len) {
if (this_len === undefined || this_len > this.length) {
this_len = this.length;
}
return this.substring(this_len - search.length, this_len) === search;
};
}
Ceci provient directement de Mozilla Developer Network et est conforme aux normes, contrairement à l’autre réponse donnée jusqu’à présent.
IE v.11 et versions ultérieures ne prennent pas en charge certaines propriétés de l'ES6 telles que set, endsWith, etc. Vous devez donc ajouter des polyfill pour les propriétés individuelles de l'ES6. Pour faciliter le processus, vous pouvez utiliser un compilateur tel que Babel JS ou des bibliothèques externes comme polyfill.js etc.
Pour les fins, ajoutez l'extrait de code ci-dessous avant la balise dans votre index.html ou avant que le regroupement ait lieu.
if (!String.prototype.endsWith) {
String.prototype.endsWith = function(searchString, position) {
var subjectString = this.toString();
if (typeof position !== 'number' || !isFinite(position) || Math.floor(position) !== position || position > subjectString.length) {
position = subjectString.length;
}
position -= searchString.length;
var lastIndex = subjectString.indexOf(searchString, position);
return lastIndex !== -1 && lastIndex === position;
};
}