Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

IE11 gives SCRIPT1002 error when defining class in javascript

I have some trouble with IE11 and a static javascript class I wrote.

The error I get is:

SCRIPT1002: Syntax error rgmui.box.js (6,1)

Which points to:

// ===========================================
// RGMUI BOX
// Static class

class RgMuiBox {
^

So I'm guessing I'm defining this class in the wrong way? What's the correct way of doing this?

I found a post on SO that seems to point out that the issue is ES5 vs ES6 - and I figure IE11 doesn't support ES6?

Just to be complete, this is what I have (simplified):

class RgMuiBox {
    static method1() {
    // .. code ..
    }
}

Thanks!

like image 443
REJH Avatar asked May 12 '16 17:05

REJH


3 Answers

Hate to reopen such an old issue, but it still shows up high in the results, so I'll add what I found out:

To reiterate what @Mikey and @REJH said, classes are not recognized by IE11.

That said, tools like Babel will allow you to translate classes into something that will run on IE11.

like image 145
user8576017 Avatar answered Oct 17 '22 22:10

user8576017


@Mikey is right. IE11 does not recognize this syntax for classes because ES6 spec: https://kangax.github.io/compat-table/es6/

class RgMuiBox {
    static method1() {
    // .. code ..
    }
}

I'm still not sure if the following is the correct way to define a static class but it works:

var RgMuiBox = {};
  RgMuiBox.method = function() {
    // ....
  }

Just putting it out here so this question has some sort of an answer that might help people get going. If there are alternatives to the above I like to hear about those!

like image 30
REJH Avatar answered Oct 17 '22 22:10

REJH


Static class Example

var _createClass = (function () {
    function defineProperties(target, props) {
        for (var i = 0; i < props.length; i++) {
            var descriptor = props[i];
            descriptor.enumerable = descriptor.enumerable || false;
            descriptor.configurable = true;
            if ("value" in descriptor) descriptor.writable = true;
            Object.defineProperty(target, descriptor.key, descriptor);
        }
    }
    return function (Constructor, protoProps, staticProps) {
        if (protoProps) defineProperties(Constructor.prototype, protoProps);
        if (staticProps) defineProperties(Constructor, staticProps);
        return Constructor;
    };
})();

function _classCallCheck(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
        throw new TypeError("Cannot call a class as a function");
    }
}

var StaticClass = (function () {
    function StaticClass() {
        _classCallCheck(this, StaticClass);
    }

    _createClass(StaticClass, null, [{
        key: "method1",
        value: function method1() {
            // .. code ..
        }
    }]);

    return StaticClass;
 })();
like image 2
Negi Rox Avatar answered Oct 17 '22 22:10

Negi Rox