web-dev-qa-db-fra.com

IE11 lance "SCRIPT1014: caractère non valide" là où tous les autres navigateurs fonctionnent

En voici un nouveau: IE11 génère des erreurs sur du code qui fonctionne dans tous les autres navigateurs. 

Quoi qu'il en soit, après quelques heures de "correction" de code pour que IE11 ne tombe pas sur son propre visage, je suis tombé sur une erreur que je n'arrive tout simplement pas à trouver une solution. Voici le code en question:

$('input[name="messageAccount"]').change(function () {
    $aButton.show();
    var addedIds = $("#hdnfield").val();
    if (addedIds == null || addedIds === "") {
        $("#hdnfield").val(this.value);
    } else {
        $("#hdnfield").val(`${addedIds}${this.value}`);
    };
});

Ceci est imbriqué à l'intérieur de l'appel de succès dans une requête Ajax. Le débogueur d'IE dit que l'erreur provient du contenu de l'instruction else mais qu'elle lit également tous les crochets de manière incorrecte. Par exemple, la parenthèse ouvrante sur cette fonction est en train d'être "fermée" après le crochet de fermeture de la requête Ajax ... (j'espère que cela avait du sens). 

Quelqu'un d'autre a-t-il déjà eu un problème similaire avec IE? J'ai un certain nombre d'autres bugs à corriger, donc s'il y a des réponses, je les posterai dès que possible. Merci d'avance.

EDIT: juste pour référence, je suis en train d’exécuter cela localement et fait partie de ce qui va devenir une application web hébergée en interne.

8
Damien

C'est parce que "` "(les chaînes du modèle) n'est pas supporté par IE: http://caniuse.com/#search=string

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals

Voir https://stackoverflow.com/a/27678299/2195875

Pour éviter cette erreur, vous pouvez utiliser un transpiler ES6 à ES5 ou simplement écrire directement du javascript ES5 valide:

au lieu de

`string text $ {expression} string text` 

écrire

"texte de chaîne" + expression + "texte de chaîne"

21
Tom

Vous pouvez également ajouter polyfill à votre html:

<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-polyfill/6.26.0/polyfill.min.js"/>

0
goksel