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/

Answers


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

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

You probably want:

title: {
    text: 'Description'
}

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/


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

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.


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.


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


Need Your Help

Windows Azure Active Directory - expiration of refreshtoken

.net azure-active-directory

I am experimenting with Windows Azure Active Directory. In a client (desktop) application the user enter his credentials and authenticate to access a REST service. I'm using latest version of Active

Read a HTML file into a string variable in memory

c# html file-io html-parsing

If I have a HTML file on disk, How can I read it all at once in to a String variable at run time? Then I need to do some processing on that string variable.