front-end-interview-handbook/packages/quiz/questions/whats-the-difference-betwee.../pt-BR.mdx

34 lines
1.6 KiB
Plaintext

---
title: Qual é a diferença entre detecção de recurso, inferência de recurso e uso da string UA?
---
## Detecção de Recursos
A detecção de recursos envolve descobrir se um navegador suporta um determinado bloco de código e executar códigos diferentes dependendo se ele suporta (ou não), para que o navegador possa sempre fornecer uma experiência funcional em vez de travar/gerar erros em alguns navegadores. Por exemplo:
```js
if ('geolocation' in navigator) {
// Pode usar navigator.geolocation
} else {
// Manipula a falta de recurso
}
```
[Modernizr](https://modernizr.com/) é uma ótima biblioteca para lidar com a detecção de recursos.
## Inferência de Recursos
A inferência de recursos verifica a existência de um recurso assim como a detecção de recursos, mas usa outra função porque presume que ela também existirá, por exemplo:
```js
if (document.getElementsByTagName) {
element = document.getElementById(id);
}
```
Isso não é muito recomendado. A detecção de recursos é mais à prova de falhas.
## UA String
Esta é uma string relatada pelo navegador que permite aos pares do protocolo de rede identificar o tipo de aplicativo, sistema operacional, fornecedor de software ou versão do software do agente de usuário solicitante. Ele pode ser acessado via `navigator.userAgent`. No entanto, a string é difícil de analisar e pode ser falsificada. Por exemplo, o Chrome informa como Chrome e Safari. Então, para detectar o Safari, você precisa verificar a presença da string do Safari e a ausência da string do Chrome. Evite este método.