O que torna a internet um lugar dinâmico e flexível é a possibilidade de navegar entre páginas e levar consigo algumas informações. Durante o desenvolvimento das nossas aplicações, ter tal dinamismo e flexibilidade também é muito importante para garantir inúmeras aplicabilidades.
Vamos ver aqui como chamar um arquivo javascript e passar para ele parâmetros, porém não vamos enviar via Query String no atributo src. Existe uma forma mais simples e funcional que deixa até mais elegante o código.
Para esse exemplo vamos ter duas páginas, a index.html e script.js. Passamos os parâmetros através dos atributos data-* na própria tag de script, conforme exemplo abaixo.
<script src="script.js" data-attr1="Aqui vem o primeiro valor" data-attr2="Aqui vem alguma coisa"></script>
Note que temos dois data-attr*, ali fica nossos parâmetros e é eles que vamos acessar nos arquivos .js.
Dentro do nosso arquivo .js, acessamos os atributos seguindo o código abaixo. Utilizamos a propriedade currentScript em seguida chamamos a função getAttribute() como faríamos normalmente.
const attr1 = document.currentScript.getAttribute('data-attr1');
Agora vamos ver dois exemplos mais completos.
index.html
<!DOCTYPE html>
<html lang="pt-br">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Javascript - SatellaSoft</title>
</head>
<body>
<div>
<p id="attr1"></p>
<p id="attr2"></p>
</div>
<script src="script.js" data-attr1="Aqui vem o primeiro valor" data-attr2="Aqui vem alguma coisa"></script>
</body>
</html>
script.js
'use strict'
const attr1 = document.currentScript.getAttribute('data-attr1');
const attr2 = document.currentScript.getAttribute('data-attr2');
document.addEventListener('DOMContentLoaded', () => {
document.querySelector('#attr1').innerHTML = attr1;
document.querySelector('#attr2').innerHTML = attr2;
});
Devemos obter os valores logo no começo do arquivo, incluir a captura dentro de um evento pode não funcionar.
Finalizamos por aqui.