При использовании классического JS или при переносе модулей ES это работает, если вы проявите некоторую осторожность (например, имейте в виду, что браузер может хранить DOM в текущем состоянии, а не в исходном, и убедитесь, что на все изображения есть ссылки, даже если они еще не показаны).
Однако с модулями ES я вижу две проблемы. Когда на них есть ссылка в «importmap», они вообще не загружаются. И когда на них ссылаются как на отдельные теги , они загружаются, но не могут быть загружены из-за политики CORS (которая запрещает загрузку модулей ES из URI файла).
Есть ли обходной путь, или мне придется смириться с тем фактом, что я могу либо использовать модули ES в браузере (тем самым нарушая функцию «Сохранить страницу как»), либо нужно перенести всю страницу в классический JavaScript, хочу ли я, чтобы он продолжал работать после загрузки?
Минимальный пример
Код: Выделить всё
module.jsКод: Выделить всё
export function getTitle() {
return "The answer is 42";
}
Код: Выделить всё
index.htmlКод: Выделить всё
Test page
{ "imports": { "title": "./module.js" } }
import { getTitle } from "title";
window.addEventListener("load", function() {
document.getElementById("title").innerText = getTitle();
document.title = getTitle();
document.body.addEventListener("click", function() {
alert(getTitle());
});
});
Here comes the title
Поведение при загрузке с http-сервера:
- Метки (заголовок и h1) заменяются содержимым из модуля.
- При нажатии на метку отображается предупреждение с содержимым из модуль
- Метки уже заменены в сохраненном HTML-файле
- Ошибка JavaScript из-за сбоя CORS при загрузке модуля
- Клик не работает так как модуль не загружается
- Сохраненный файл ведет себя так же, как онлайн-версия (размещена на http-сервере).
[*]Это никогда не будет работать, это не ошибка, и обходного пути нет (бонусные баллы, если можно ссылаться на такие источники, как отклоненные ошибки или спецификации)
[*]Это признанная ошибка (с номером ошибки) [я не смог ее найти]
[*]Вы можете изменить файл тем или иным способом, и он будет работать.
Подробнее здесь: https://stackoverflow.com/questions/797 ... ed-locally
Мобильная версия