user1712040
user1712040

Reputation: 291

SCRIPT1028: Expected identifier, string or number

I'm running a plugin that displays an events calendar. It works great in all browsers except in IE compatibility mode. When that option is checked, the calendar disappears. I believe its a JS error.

IE Debugger Error:

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

In my plugin editor this is the code:

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

I'm not great at debugging so any help would be appreciated.

If it helps, here is the page: http://www.mbausa.org/calendar/

Upvotes: 28

Views: 50469

Answers (7)

Rikard Askel&#246;f
Rikard Askel&#246;f

Reputation: 2932

I got this error when trying to import a ES6 module without transpilation through Babel or similar tools.

This row generated the error:

import myES6module from 'my-npm-ES6-module'

The solution is to make sure your workflow actually transpiles it to browser-compatible JavaScript.

Upvotes: 0

igasparetto
igasparetto

Reputation: 1146

If you are using Vuex and the issue manifests at the computed hook calling mapState, then the issue is with the spread operator.

},
computed: {
  ...mapState({

Use babel to fix it: https://babeljs.io/docs/en/babel-plugin-proposal-object-rest-spread

Upvotes: 6

lulalala
lulalala

Reputation: 17981

Another possible error is due to the reserved keyword being used as hash key.

IE8 errors when defining a Javascript object?

When I use {class:'icon'} I would also get this error. Other IE8 keywords would probably do the same too.

Upvotes: 1

Mike McLin
Mike McLin

Reputation: 3637

There are 2 common causes for this error. Either having a trailing comma when inappropriate, or using a JavaScript reserved word. In your case, you have 2 unnecessary commas. Below is the correct code snippet, with comments where I removed the commas.

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

I actually did a blog post (and video) explaining the error and showing examples and fixes. It can be found here: http://mikemclin.net/fixing-error-script1028-expected-identifier-string-or-number/

Upvotes: 11

Pierre
Pierre

Reputation: 1282

Old version of IE doesn't support mal-formated JSON String.

You should never put a comma ',' separator when no braces '[', accolades '{' or new object properties come after.

Try :

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

instead of :

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

Upvotes: 8

El Ronnoco
El Ronnoco

Reputation: 11922

Rather than work round compatibility mode you can force non-compatibility mode with...

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

in your <head> tag.

Upvotes: 3

Bj&#246;rn
Bj&#246;rn

Reputation: 29381

Internet Explorer have troubles with trailing commas in objects and arrays;

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

You probably want:

title: {
    text: 'Description'
}

Upvotes: 46

Related Questions