Mit klassischem JS oder beim Transpilieren der ES-Module funktioniert es, wenn Sie etwas Vorsicht walten lassen (z. B. beachten Sie, dass der Browser das DOM möglicherweise im aktuellen Zustand speichert und nicht). das erste, und stellen Sie sicher, dass auf alle Bilder verwiesen wird, auch wenn sie noch nicht angezeigt werden).
Bei ES-Modulen sehe ich jedoch zwei Probleme. Wenn sie in einer „Importmap“ referenziert werden, werden sie überhaupt nicht heruntergeladen. Und wenn sie als einzelne -Tags referenziert werden, werden sie heruntergeladen, können aber aufgrund der CORS-Richtlinie (die das Laden von ES-Modulen aus Datei--URIs nicht zulässt) nicht geladen werden.
Gibt es eine Problemumgehung oder muss ich damit leben, dass ich entweder ES-Module im Browser verwenden kann (wodurch die Funktion „Seite speichern unter“ unterbrochen wird) oder die gesamte Seite in die klassische Version umwandeln muss JavaScript, wenn ich möchte, dass es nach dem Herunterladen weiterhin funktioniert?
Minimalbeispiel
Code: Select all
module.jsCode: Select all
export function getTitle() {
return "The answer is 42";
}
Code: Select all
index.htmlCode: Select all
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
Verhalten beim Laden vom http-Server:
- Die Beschriftungen (Titel und h1) werden durch Inhalte aus dem Modul ersetzt
- Ein Klick auf die Beschriftung zeigt eine Warnung mit Inhalten aus dem an Modul
- Die Beschriftungen werden bereits in der gespeicherten HTML-Datei ersetzt
- JavaScript-Fehler aufgrund von CORS-Fehler beim Laden des Moduls
- Der Klick funktioniert nicht als Das Modul ist nicht geladen
- Gespeicherte Datei verhält sich genauso wie die Online-Version (gehostet auf einem http-Server).
- Das wird nie funktionieren, es ist kein Fehler und es gibt keine Problemumgehung (Bonuspunkte, wenn Quellen wie abgelehnte Fehler oder Spezifikationen zitiert werden könnten)
- Dies ist ein bestätigter Fehler (mit Fehlernummer) [Ich konnte keinen finden]
- Sie können die Datei auf diese oder jene Weise ändern und es wird funktionieren.
Mobile version