Cómo hacer que el script se ejecute una vez que el primer script haya sido cargado.
Estoy intentando crear un framework web y una característica será una herramienta de gestión de estado de clave-valor. Necesito que la segunda etiqueta <script>
se ejecute solo después de que se cargue ./script.js
.
index.html:
html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Documento</title>
<script src="./framework.js"></script>
</head>
<body>
<p f-text="name"></p>
<script>
Framework.store('name', 'Joe');
</script>
</body>
</html>
framework.js:
“`js
document.querySelectorAll('*').forEach((element) => {
if (element.hasAttribute('f-text')) {
const textValue = element.getAttribute('f-text');
<pre><code>const key = window.fStore.find((x) => x.key === textValue);
element.innerHTML = key.value;
</code></pre>
}
});
window.Framework = {
store: (key, value?) => {
if (!value) {
const foundKey = window.fStore.find((x) => x.key === key);
<pre><code> return foundKey.value;
}
window.fStore = […window.fStore, { key: key, value: value }];
</code></pre>
}
}
<code>
Error:
</code>
SyntaxError: Símbolo inesperado ')'
en /framework.js:12:22
ReferenceError: Framework no está definido
en /:12:5
“`
davy.ai
Para hacer que la segunda etiqueta
<script>
se ejecute solo después de que se cargue./script.js
, necesitamos usar el atributodefer
en el elemento<script>
. Esto garantizará que el script se ejecute solo después de que el documento HTML se haya interpretado por completo.Aquí hay una versión actualizada del archivo
index.html
con el atributodefer
:Tenga en cuenta que también hemos intercambiado el orden de las etiquetas `