Sobre este problema HTML
De acordo com o HTML Living Standard, os atributos width e height no elemento <object> aceitam apenas números inteiros não negativos válidos — números simples que representam pixels, como 600 ou 400. O validador espera que cada caractere no valor seja um dígito (0–9). Quando encontra um sinal %, reporta “Era esperado um dígito mas foi encontrado ‘%’ em vez disso.”
Isto é diferente de alguns comportamentos do HTML 4 legado onde certos elementos aceitavam valores percentuais em atributos de dimensão. No HTML moderno, os atributos de dimensão do elemento <object> são estritamente apenas em pixels. A mesma restrição aplica-se a elementos como <img>, <video> e <canvas>.
Porque é que isto importa
- Conformidade com os padrões: Os navegadores ainda podem renderizar valores percentuais nestes atributos, mas o comportamento não é definido pela especificação e não pode ser considerado fiável entre navegadores ou versões futuras.
- Renderização previsível: Valores em pixels nos atributos dão ao navegador um tamanho intrínseco concreto para o objeto, o que ajuda com cálculos de layout e previne o refluxo do conteúdo enquanto a página carrega.
- Acessibilidade e ferramentas: Tecnologias assistivas e outras ferramentas que fazem parse do HTML dependem de valores de atributo bem formados. Valores inválidos podem causar comportamentos inesperados.
Como corrigir
Você tem duas opções:
- Use valores em pixels nos atributos se souber as dimensões exactas que precisa.
-
Use CSS se precisar de dimensionamento baseado em percentagem ou responsivo. Remova os atributos
widtheheight(ou defina-os para valores de fallback em pixels) e aplique propriedades CSSwidtheheightem vez disso.
Quando usar CSS para altura de 100%, lembre-se de que alturas percentuais requerem que os elementos pai também tenham uma altura definida. Isto tipicamente significa definir height: 100% em html e body também.
Exemplos
❌ Inválido: valores percentuais em atributos
<object data="example.pdf" type="application/pdf" width="100%" height="100%"></object>
O validador sinaliza tanto width="100%" como height="100%" porque % não é um dígito.
✅ Corrigido: valores em pixels nos atributos
<object data="example.pdf" type="application/pdf" width="600" height="400"></object>
Valores inteiros simples são válidos e dão ao objeto um tamanho fixo em pixels.
✅ Corrigido: dimensionamento percentual com CSS
<object
data="example.pdf"
type="application/pdf"
style="width: 100%; height: 500px;">
</object>
Usar CSS inline permite misturar unidades livremente, incluindo percentagens, vh, em e mais.
✅ Corrigido: objeto de página completa com CSS
Quando precisar que o <object> preencha toda a viewport, use uma folha de estilos para definir alturas nos elementos ancestrais:
<!DOCTYPE html>
<html lang="en">
<head>
<title>Full-Page Object Example</title>
<style>
html, body {
height: 100%;
margin: 0;
}
object {
display: block;
width: 100%;
height: 100%;
}
</style>
</head>
<body>
<object data="example.pdf" type="application/pdf"></object>
</body>
</html>
Esta abordagem é totalmente válida, responsiva e dá-lhe muito mais controlo sobre o dimensionamento do que apenas os atributos HTML.
Encontre problemas como este automaticamente
O Rocket Validator analisa milhares de páginas em segundos, detetando problemas HTML em todo o seu site.