Ответ 1
Это можно сделать, но решение совсем не совсем и включает внешний script. script может установить флаг, или глобальный обработчик ошибок можно настроить для просмотра синтаксических ошибок при загрузке script.
Если script приводит к синтаксической ошибке, он по-прежнему считается загруженным, поэтому сетевые проблемы не могут вызывать ложные срабатывания:
Асинхр-detection.js
window.isAsyncAvailable = true;
async () => {};
main.js
new Promise(function (resolve, reject) {
var script = document.createElement('script');
document.body.appendChild(script);
script.onload = resolve.bind(null, true);
script.onerror = reject;
script.async = true;
script.src = 'async-detection.js';
})
.then(function () {
console.log(window.isAsyncAvailable);
})
.catch(/* generic script loading error */);
Этот метод может использоваться для обнаружения синтаксических функций, используемых на веб-сайте, которые не могут быть заполнены или обычно пойманы с помощью try..catch
. Особенно полезно надежно запускать Ваш браузер на последнем экране.