Sobre este problema HTML
O atributo src num elemento <script> diz ao navegador onde buscar um ficheiro JavaScript externo. Segundo a especificação HTML, quando o atributo src está presente, o seu valor deve ser um URL válido e não vazio. Uma string vazia não se qualifica como um URL válido, por isso o validador assinala-a como erro.
Este problema tipicamente surge em alguns cenários comuns:
-
Placeholders de templates ou CMS — Um motor de templates ou sistema de gestão de conteúdos produz um
srcvazio quando nenhum URL de script está configurado. -
JavaScript dinâmico — O código do lado do cliente pretende definir o
srcmais tarde, mas o HTML inicial é enviado com um valor vazio. - Erros de cópia-e-cola — O atributo foi adicionado em antecipação de um ficheiro de script que nunca foi especificado.
Para além de falhar a validação, um src vazio causa problemas reais. A maioria dos navegadores interpreta um src vazio como um URL relativo que resolve para o URL da página atual. Isto significa que o navegador fará um pedido HTTP adicional para re-buscar o documento HTML atual e tentar analisá-lo como JavaScript, desperdiçando largura de banda, retardando o carregamento da página e potencialmente gerando erros na consola. Também pode causar efeitos colaterais inesperados nos registos do servidor e análises.
Como corrigir
Escolha a abordagem que corresponde à sua intenção:
-
Forneça um URL válido — Se precisa de um script externo, defina
srcpara o caminho de ficheiro correto ou URL completo. -
Use um script inline — Se o seu JavaScript está escrito diretamente no HTML, remova completamente o atributo
src. Note que quandosrcestá presente, os navegadores ignoram qualquer conteúdo entre as tags<script>de abertura e fecho. -
Remova o elemento — Se o script não é necessário, remova completamente o elemento
<script>.
Tenha também em mente:
- Certifique-se de que o caminho do ficheiro está correto relativamente à localização do ficheiro HTML.
- Se usar um URL absoluto, verifique que é acessível e retorna conteúdo JavaScript.
-
Se um script só deve ser carregado condicionalmente, trate a condição na sua lógica do lado do servidor ou de construção em vez de produzir um
srcvazio.
Exemplos
❌ Inválido: Atributo src vazio
<script src=""></script>
Isto despoleta o erro de validação porque o valor de src é uma string vazia.
❌ Inválido: Atributo src apenas com espaços em branco
<script src=" "></script>
Um valor contendo apenas espaços em branco também não é um URL válido e produzirá o mesmo erro.
✅ Corrigido: Script externo válido
<script src="js/app.js"></script>
O atributo src contém um URL relativo válido que aponta para um ficheiro JavaScript real.
✅ Corrigido: Script externo válido com um URL completo
<script src="https://example.com/js/library.min.js"></script>
✅ Corrigido: Script inline sem src
Se quiser escrever JavaScript diretamente no seu HTML, omita o atributo src:
<script>
console.log("This is an inline script.");
</script>
✅ Corrigido: Omitir condicionalmente o elemento
Se o URL do script vier de uma variável de template que pode estar vazia, trate-a ao nível do template para que o elemento <script> só seja renderizado quando um URL estiver disponível. Por exemplo, numa linguagem de templates:
<!-- Pseudocódigo — só produz a tag quando o URL existe -->
<!-- {% if script_url %} -->
<script src="analytics.js"></script>
<!-- {% endif %} -->
Isto previne que o src vazio chegue alguma vez ao navegador.
Encontre problemas como este automaticamente
O Rocket Validator analisa milhares de páginas em segundos, detetando problemas HTML em todo o seu site.