tgoop.com/htmlshit/3790
Create:
Last Update:
Last Update:
#фишка дня
Вот как вы думаете, что может преследовать разработчика веб-браузера во сне? Может, это разбор дерева DOM? А может, реализация всех новых атрибутов элементов?
Нет! Это поддержка легаси! Например, как вам такое сообщение в PR браузера Ladybird:
Atlassian login gets the base URL for its module scripts by throwing an error and pulling out the current script's URL from error.stack with regex.
Вы всё правильно поняли. Получение базового URL-адреса сборки ведётся путём выбрасывания исключения и поиска адреса в нём. Я такое делал на AppsScript чтобы получить стек, но прям в продакшене да чтобы для реального использования...
Пруф: https://github.com/LadybirdBrowser/ladybird/pull/5678
Дальше — больше. Не только разработчики Atlassian (Jira, Trello) используют подобное, тем же самым славится и любимый многими Parcel: https://github.com/parcel-bundler/parcel/pull/2534/files#diff-39112519f42223a8e331d0dac27d01f8a70db6fe3d515ad8016856931a6ccbda
Стало быть, фишкой дня объявляется:
function getBundleURL() {
// Attempt to find the URL of the current script and use that as the base URL
try {
throw new Error();
} catch (err) {
var matches = ('' + err.stack).match(/(https?|file|ftp):\/\/[^)\n]+/g);
if (matches) {
return getBaseURL(matches[0]);
}
}
И, получается, ничего лучше же у нас так-то и нет. Если нет двери — используем окно.
А подробнее о браузере Ladybird я рассказывал в нескольких постах. Например, тут: https://www.tgoop.com/htmlshit/2935
#js #hack
BY Будни разработчика

Share with your friend now:
tgoop.com/htmlshit/3790
