IE不';无法识别Javascript类和中断

IE不';无法识别Javascript类和中断,javascript,internet-explorer,Javascript,Internet Explorer,我编写了一些Javascript代码,在所有主流浏览器中都能完美运行。当然,我通过创建一个函数来确定用户正在使用的浏览器,从而确保Internet Explorer不会执行这些操作 但问题是:即使我告诉IE不要执行代码,浏览器仍然会读取我所有的Javascript,因为它发现了一些它无法识别的东西,所以它会停止运行任何其他Javascript 我能想到的唯一一件事就是创建一个函数,如果用户使用IE,该函数将返回,但这似乎不起作用,因为我认为问题来自IE最初解析我的脚本,而无法理解现代JS语法 以

我编写了一些Javascript代码,在所有主流浏览器中都能完美运行。当然,我通过创建一个函数来确定用户正在使用的浏览器,从而确保Internet Explorer不会执行这些操作

但问题是:即使我告诉IE不要执行代码,浏览器仍然会读取我所有的Javascript,因为它发现了一些它无法识别的东西,所以它会停止运行任何其他Javascript

我能想到的唯一一件事就是创建一个函数,如果用户使用IE,该函数将返回,但这似乎不起作用,因为我认为问题来自IE最初解析我的脚本,而无法理解现代JS语法

以下是我的代码的简化版本:

  class Section {
    constructor(dom, startPosition, endPosition, backgroundPosition) {
      this.dom = dom;
      this.startPosition = startPosition;
      this.endPosition = endPosition;
      this.backgroundPosition = backgroundPosition;
    }
  }


function isIE() {
  ua = navigator.userAgent;
  /* MSIE used to detect old browsers and Trident used to newer ones*/
  var is_ie = ua.indexOf("MSIE ") > -1 || ua.indexOf("Trident/") > -1;

  return is_ie;
}

let sections = [];
function sectionParallax() {
  if (!isIE()) {
    sections.push( new Section("test", 123, 123, 123))
  }
}
IE的控制台报告:

SCRIPT1002: Syntax error
课程部分


我完全不知道该在这里做什么。如何确保IE不加载这部分代码?

JS解析器必须解析您告诉它加载的JavaScript,即使它是一个从未执行过的函数

如果要阻止IE加载它,请不要加载包含它的
。这意味着您需要动态添加
,如果浏览器确实支持该功能


如果您需要支持IE,那么不要将JS交付给使用IE无法识别的语法的浏览器。考虑使用像Babel[Bael]这样的工具将它转换成一个较旧版本的JavaScript,IE确实支持它。

< p>在加载脚本之前,可以检查<代码> IE < /> >:

不支持IE浏览器,因此,在IE浏览器中,它将显示“SCRIPT1002:语法错误”错误

您可以按如下方式修改代码:

    var Section = /** @class */ (function () {
        function Section(dom, startPosition, endPosition, backgroundPosition) {
            this.dom = dom;
            this.startPosition = startPosition;
            this.endPosition = endPosition;
            this.backgroundPosition = backgroundPosition;
        }
        return Section;
    }());
    function isIE() {
        ua = navigator.userAgent;
        /* MSIE used to detect old browsers and Trident used to newer ones*/
        var is_ie = ua.indexOf("MSIE ") > -1 || ua.indexOf("Trident/") > -1;
        return is_ie;
    }
    var sections = [];
    function sectionParallax() {
        if (!isIE()) {
            /*If not using IE browser.  */
            var newsection = new Section("test", 123, 123, 123);
            sections.push(newsection);
        }
    }

可能的重复:虽然第一行应该是
,但您的方式对我不起作用。实际上,仔细检查,这似乎不起作用,IE仍然加载所有脚本。Damna根据文档,它似乎适用于IE10和以前的版本,上面没有任何内容。
    var Section = /** @class */ (function () {
        function Section(dom, startPosition, endPosition, backgroundPosition) {
            this.dom = dom;
            this.startPosition = startPosition;
            this.endPosition = endPosition;
            this.backgroundPosition = backgroundPosition;
        }
        return Section;
    }());
    function isIE() {
        ua = navigator.userAgent;
        /* MSIE used to detect old browsers and Trident used to newer ones*/
        var is_ie = ua.indexOf("MSIE ") > -1 || ua.indexOf("Trident/") > -1;
        return is_ie;
    }
    var sections = [];
    function sectionParallax() {
        if (!isIE()) {
            /*If not using IE browser.  */
            var newsection = new Section("test", 123, 123, 123);
            sections.push(newsection);
        }
    }