web-dev-qa-db-fra.com

SCRIPT1028: Identifiant, chaîne ou nombre attendu

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/

22
user1712040

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'
}
43
Björn

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/

10
Mike McLin

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
},
7
Pierre

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>.

3
El Ronnoco

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.

1
lulalala

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

0
igasparetto