Se você trabalha há pelo menos uns 8,9 anos com desenvolvimento já deve ter uma certa familiaridade com estas imagens abaixo:
Ok, a saudade não é tão forte assim, hehe, mas e se, com toda tecnologia existente no front-end de hoje, você tiver que, em um projeto, ter em sua aplicação scripts com um objeto do JavaScript atual, que roda nativamente nos navegadores modernos mas não no Internet Explorer 8, 9 e 11?
Ai você me pergunta: “Ué, mais quem que ainda os utiliza?”
Respondo: Tem muuuuuita empresa, e de grande porte, que ainda utiliza versões do IE 11, por exemplo. E não estão nem um pouco afim de mudar para os mais recentes.
Mas voltando ao assunto principal, o objeto que vamos falar é o “Promise”, onde sua função é retornar a conclusão ou falha de uma operação assíncrona. Função esta que já é nativa nos navegadores modernos e atuais.
Eis que ao rodar o seu projetinho JS todo moderno no IE 11 você se depara com a seguinte mensagem quebra corações:
Ele não reconhece o objeto, e agora?
Neste caso recorremos ao polyfill (ou polyfiller), trecho de código com a função de dar ao navegador suporte a features que ele não tem nativamente.
No caso acima, foi resolvido desta forma:
1 2 3 | (function(undefined) { }) .call('object' === typeof window && window || 'object' === typeof self && self || 'object' === typeof global && global || {}); |
Desta maneira, a execução do script com o objeto em questão torna-se possível.
No projeto que precisei implementar testei com o IE 9 e 11, funcionando perfeitamente em ambos.
É isso, caso tenha alguma dúvida, sugestão, crítica e/ou complemento a fazer, só comentar abaixo!
Recomendo o acesso: https://polyfill.io
Grande abraço!