Я выполняю тестирование поддержки функций Javascript на своем сайте, но при тестировании на IE11 у меня возникает проблема, которая вызывает синтаксическую ошибку (из-за параметра по умолчанию) перед выполнением моего теста функций.
Мое приложение создает тег сценария для вставки в представление макета. Этот тег сценария создается с использованием конфигурации, которая определяет все зависимости JS. Я гарантировал, что полученный файл JS, доставленный в браузер, будет иметь мою функцию обнаружения в верхней части комбинированного скрипта (сразу после jQuery). Но, похоже, происходит то, что некоторая функция, определенная позже в скрипте, запускается (или анализируется?) Перед выполнением моего выражения обнаружения функции.
Для большей ясности, вот пример того, как выглядит мой скрипт-тег:
<script type="text/javascript" src="/asset/jscript?load=feature-detection,global,login&version=1820523616"></script>
В результате получается файл сценария, который сначала содержит jQuery, затем мой файл feature-detection.js, а затем все остальное. Эта строка в одном из файлов JS после обнаружения функции вызывает синтаксическую ошибку:
processMessages: function(problem, container, useMessage = true) {...}
EDIT:
Чтобы было ясно, я не уверен, почему синтаксическая ошибка возникнет до логики обнаружения функции, даже если обнаружение моей функции происходит намного раньше в коде. Вот как выглядит мой комбинированный скрипт:
/* jQuery v3.2.0 ... */
// This is a placeholder for jQuery code
// Test browser support for 'for...of' statement.
// If this feature is lacking, ES6 support is lacking from the browser
try {
eval("for (var i of []);");
} catch(ex) {
// Show 'Unsupported Browser' banner
alert('GET BETTER BROWSER');
}
// The rest of my JS files, which would contain several non-supported features
processMessages: function(problem, container, useMessage = true) {...}
«Предупреждение» никогда не срабатывает в IE11, вместо этого я получаю «Ожидаемый»), указывающий на функцию параметра по умолчанию