Подтвердить что ты не робот

SCRIPT1028: ожидаемый идентификатор, строка или номер

Я запускаю плагин, который отображает календарь событий. Он отлично работает во всех браузерах, за исключением режима совместимости с IE. Когда эта опция отмечена, календарь исчезает. Я считаю, что это ошибка JS.

Ошибка отладчика IE:

element.qtip({
    content: {
    text: event.description,
    title: {
    text: 'Description',
    }
  },
position: {
    at: 'top right',
    adjust: {
    x: 0, y: 30
   },
},

В моем редакторе плагинов это код:

element.qtip({
  content: {
  text: event.description,
  title: {
  text: '<?php _e('Description', 'event_espresso'); ?>',
  }
},
position: {
   at: 'top right',
   adjust: {
   x: 0, y: 30
  },
},

Я не очень разбираюсь в отладке, поэтому любая помощь будет оценена.

Если это помогает, вот страница: http://www.mbausa.org/calendar/

4b9b3361

Ответ 1

У Internet Explorer есть проблемы с запятыми в объектах и ​​массивах;

title: {
    text: 'Description', //<--
}

Вероятно, вы хотите:

title: {
    text: 'Description'
}

Ответ 2

Есть две распространенные причины этой ошибки. Либо иметь конечную запятую, если она не подходит, либо использовать зарезервированное слово JavaScript. В вашем случае у вас есть две ненужные запятые. Ниже приведен правильный фрагмент кода с комментариями, где я удалял запятые.

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

На самом деле я сделал сообщение в блоге (и видео), объяснив ошибку и показывая примеры и исправления. Его можно найти здесь: http://mikemclin.net/fixing-error-script1028-expected-identifier-string-or-number/

Ответ 3

В старой версии IE не поддерживается некорректно сформированная строка JSON.

Вы никогда не должны помещать разделитель запятой, разделитель, когда нет привязок [', accolades' {'или новых свойств объекта.

Попробуйте:

position: {
at: 'top right',
adjust: {
   x: 0, y: 30
  } // <-- no comma here
},

вместо:

position: {
at: 'top right',
adjust: {
   x: 0, y: 30
  }, // <-- comma here
},

Ответ 4

Вместо того, чтобы работать в режиме совместимости, вы можете принудительно отключить режим совместимости с...

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8" />

в тэге <head>.

Ответ 5

Другая возможная ошибка связана с тем, что зарезервированное ключевое слово используется как хэш-ключ.

Ошибки IE8 при определении объекта Javascript?

Когда я использую {class:'icon'}, я также получаю эту ошибку. Другие ключевые слова IE8, вероятно, тоже будут делать то же самое.

Ответ 6

Если вы используете Vuex, и проблема проявляется в computed хуке, вызывающем mapState, то проблема mapState с оператором распространения.

},
computed: {
  ...mapState({

Используйте babel, чтобы исправить это: https://babeljs.io/docs/en/babel-plugin-proposal-object-rest-spread