Я написал код 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
На class Section.
У меня совершенно нет идей, что здесь делать. Как мне убедиться, что IE не загружает эту часть кода?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Парсер JS должен анализировать JavaScript, который вы ему приказываете загрузить, даже если это функция, которая никогда не выполняется.
Если вы хотите, чтобы IE не загружал его, то не загружайте <script>, который его содержит. Это означает, что вам нужно динамически добавлять <script>, если браузер поддерживает эту функцию.
Если вам нужно поддерживать IE, не доставляйте JS в браузер, использующий синтаксис, который IE не распознает. Рассмотрите возможность использования такого инструмента, как Babel, для переноса его в более старую версию JavaScript, которую поддерживает IE.
Вы можете проверить IE перед загрузкой скрипта с помощью Условный комментарий :
<!--[if !IE]>-->
<script src = "script.js"></script>
<!--<![endif]-->
Хотя первая строка должна быть <!--[if !IE]>-->, ваш способ мне не помог.
На самом деле при ближайшем рассмотрении это не работает, IE по-прежнему загружает весь скрипт. Проклятие
Согласно документации, похоже, что это работает для IE10 и предыдущих версий, и ничего выше.
Классы и конструктор JavaScript не поддерживает браузер IE, поэтому в браузере IE будет отображаться ошибка «SCRIPT1002: Syntax error».
Вы можете изменить свой код, как показано ниже:
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);
}
}
Возможный дубликат: stackoverflow.com/questions/37194202/…