Corrigir problemas de JavaScript relacionados à Pesquisa
Este guia ajuda a identificar e corrigir problemas que podem impedir a exibição de uma página ou um conteúdo com JavaScript na Pesquisa Google. Embora o Googlebot execute JavaScript, há algumas diferenças e limitações que precisam ser consideradas na criação de páginas e aplicativos para acomodar o modo como os rastreadores acessam e renderizam seu conteúdo. Nosso guia Princípios básicos de SEO em JavaScript tem mais informações sobre como é possível otimizar seu site JavaScript para a Pesquisa Google.
O Googlebot foi criado para se comportar bem na Web. Ele prioriza o rastreamento sem afetar a experiência dos usuários que acessam o site (link em inglês). O Googlebot e
o componente Web Rendering Service (WRS) analisam e identificam continuamente recursos que
não contribuem para o conteúdo essencial da página e podem não os buscar. Por exemplo,
relatórios e solicitações de erros que não contribuem para o conteúdo essencial da página e outros
tipos parecidos de solicitações que não são usadas ou são desnecessárias para extrair o conteúdo essencial da página. Talvez a
análise do cliente não represente
de maneira completa ou precisa as atividades do Googlebot e do WRS no site. Use o
Search Console para monitorar
a atividade e o feedback do Googlebot e do WRS no seu site.
Se você suspeitar que problemas de JavaScript estão impedindo a exibição de uma página ou um conteúdo com
JavaScript na Pesquisa Google, siga estas etapas. Caso você não tenha certeza se o JavaScript é a causa principal, siga nosso
guia geral de depuração para determinar
o problema específico.
Além disso, é recomendável coletar e auditar os erros de JavaScript encontrados no site pelos
usuários, incluindo o Googlebot, para identificar problemas que possam afetar a
renderização do conteúdo.
window.addEventListener('error', function(e) {
var errorText = [
e.message,
'URL: ' + e.filename,
'Line: ' + e.lineno + ', Column: ' + e.colno,
'Stack: ' + (e.error && e.error.stack || '(no stack trace)')
].join('\n');
// Example: log errors as visual output into the host page.
// Note: you probably don't want to show such errors to users, or
// have the errors get indexed by Googlebot; however, it may
// be a useful feature while actively debugging the page.
var DOM_ID = 'rendering-debug-pre';
if (!document.getElementById(DOM_ID)) {
var log = document.createElement('pre');
log.id = DOM_ID;
log.style.whiteSpace = 'pre-wrap';
log.textContent = errorText;
if (!document.body) document.body = document.createElement('body');
document.body.insertBefore(log, document.body.firstChild);
} else {
document.getElementById(DOM_ID).textContent += '\n\n' + errorText;
}
// Example: log the error to remote service.
// Note: you can log errors to a remote service, to understand
// and monitor the types of errors encountered by regular users,
// Googlebot, and other crawlers.
var client = new XMLHttpRequest();
client.open('POST', 'https://example.com/logError');
client.setRequestHeader('Content-Type', 'text/plain;charset=UTF-8');
client.send(errorText);
});
Evite erros soft 404.
Em um aplicativo de página única (SPA), isso pode ser particularmente difícil.
Para evitar que páginas de erro sejam indexadas, você pode usar uma ou as duas estratégias a seguir:
Redirecione para um URL no qual o servidor responde com um código de status 404.
Mostrar exemplo
fetch(`https://api.kitten.club/cats/${id}`)
.then(res => res.json())
.then((cat) => {
if (!cat.exists) {
// redirect to page that gives a 404
window.location.href = '/not-found';
}
});
Não use URLs de fragmento para carregar conteúdos diferentes.
Não dependa da persistência de dados para veicular conteúdo.
Use a técnica de impressão digital de conteúdo para evitar problemas de cache com o Googlebot.
Verifique se o aplicativo usa a
detecção de recursos (em inglês)
para as principais APIs necessárias e ofereça um comportamento
substituto ou polyfill, quando aplicável.
Verifique se o conteúdo funciona com conexões HTTP.
Quando o problema for corrigido, uma marca de seleção verde aparecerá e nenhum erro será exibido. Caso você ainda
encontre erros, escreva uma postagem no
JavaScript
Sites in Search Working Group.