J'exécute un plugin qui affiche un calendrier des événements. Cela fonctionne très bien dans tous les navigateurs sauf en mode de compatibilité IE. Lorsque cette option est cochée, le calendrier disparaît. Je crois que c'est une erreur de JS.
Erreur du débogueur IE:
element.qtip({
content: {
text: event.description,
title: {
text: 'Description',
}
},
position: {
at: 'top right',
adjust: {
x: 0, y: 30
},
},
Dans mon éditeur de plugin, voici le code:
element.qtip({
content: {
text: event.description,
title: {
text: '<?php _e('Description', 'event_espresso'); ?>',
}
},
position: {
at: 'top right',
adjust: {
x: 0, y: 30
},
},
Je ne suis pas doué pour le débogage, toute aide serait la bienvenue.
Si cela vous aide, voici la page: http://www.mbausa.org/calendar/
Internet Explorer a des problèmes avec les virgules de fin dans les objets et les tableaux;
title: {
text: 'Description', //<--
}
Vous voulez probablement:
title: {
text: 'Description'
}
Il y a 2 causes communes à cette erreur. Soit avoir une virgule de fin lorsque inapproprié, soit utiliser un mot réservé par JavaScript. Dans votre cas, vous avez 2 virgules inutiles. Ci-dessous est l'extrait de code correct, avec des commentaires où j'ai supprimé les virgules.
element.qtip({
content: {
text: event.description,
title: {
text: '<?php _e('Description', 'event_espresso'); ?>' // Removed Comma
}
},
position: {
at: 'top right',
adjust: {
x: 0, y: 30
} // Removed Comma
},
En fait, j'ai écrit un article de blog (et une vidéo) expliquant l'erreur et montrant des exemples et des correctifs. Vous pouvez le trouver ici: http://mikemclin.net/fixing-error-script1028-expected-identifier-string-or-number/
L'ancienne version de IE ne prend pas en charge la chaîne JSON mal formulée.
Vous ne devriez jamais mettre une virgule ',' séparateur quand aucune accolade '[', accolades '{' ou nouvelles propriétés d'objet viennent après.
Essayez:
position: {
at: 'top right',
adjust: {
x: 0, y: 30
} // <-- no comma here
},
au lieu de :
position: {
at: 'top right',
adjust: {
x: 0, y: 30
}, // <-- comma here
},
Plutôt que de contourner le mode de compatibilité, vous pouvez forcer le mode de non-compatibilité avec ...
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8" />
dans votre tag <head>
.
Une autre erreur possible est due au mot-clé réservé utilisé comme clé de hachage.
Erreurs IE8 lors de la définition d'un objet Javascript?
Lorsque j'utilise {class:'icon'}
, j'obtiendrais également cette erreur. D'autres mots clés IE8 feraient probablement de même.
Si vous utilisez Vuex et que le problème se manifeste au crochet computed
en appelant mapState
, le problème concerne l'opérateur spread.
},
computed: {
...mapState({
Utilisez babel pour y remédier: https://babeljs.io/docs/en/babel-plugin-proposal-object-rest-spread