Este documento discute melhores práticas para desenvolvimento cross-browser em HTML5, enfatizando a detecção de funcionalidades em vez de navegadores específicos. Também recomenda testar funcionalidades antes de usá-las e aplicar workarounds quando comportamentos quebrados são detectados.
1. HTML 5: Melhorespráticas Cross-Browser João Paulo Clementi Development Specialist blogs.msdn.com/jpclementi twitter.com/jpclementi 06/05/2010 Daniel Ferreira Development Specialist blogs.msdn.com/danielsf twitter.com/Eng_DanielSF
9. Melhorespráticas Fazer Detecção de funcionalidade Detecção de comportamento NãoFazer Detectar browsers específicos Assumirfuncionalidadesnãorelacionadas IMPACTO: Custo de manutençãoreduzido 9
10. Fazer: Detecção de funcionalidade Testar a funcionalidade antes de usá-la Principalmenteparafuncionalidadesnovas Nãotãocríticoparafuncionalidadesbemestabelecidas Testarospadrões antes Sempreusarpadrõesquandosuportados Evitarutilizaracidentalmentefuncionalidadeslegadas 10
15. Fazer: detecção de comportamento Problema Um browser tem um bug emumafuncionalidade Uma deteçãobásica de funcionalidadefalhaaoidentificar o problema Solução Executar um testeparaidentificar o comportamentoquebrado Aplicar um workaround quandoele é detectado 15
16. Fazer: detecção de comportamento // Executar um testequedirecionapara um problemaconhecido vartestPassed = runTest(); // Checar se o testepassou if(!testPassed) { // Se não, aplicar um workaround } 16
18. Comparação do path do código Detecção de funcionalidade Detecção de versão = Códigoalternativo = Ponto de deteção
19. Nãofazer: detectar browsers específicos Mas euseiqueestafuncionalidadefuncionaneste browser Estafuncionalidadedevefuncionarem outros browsers O novo browser deveadicionarsuporteparaestafuncionalidade Mas euseiqueestafuncionalidade tem um bug neste browser O mesmo bug podeexistirem outros browsers O bug podeserounãoconsertadoemumapróximaversão 19
20. // Using the User Agent String if( navigator.userAgent.indexOf(x) != -1 ) { // Browser-specific code } Nãofazer: detectar browsers específicos 20
28. .target { border-radius: 20px; -moz-border-radius: 20px; -webkit-border-radius: 20px; } Fazer: detecção de funcionalidade no CSS 28
29. Fazer: detecção de funcionalidade no HTML <!-- Elements with fallback content --> <videosrc="test.vid"> <objectsrc="test.vid"> <ahref="test.vid"> Download Video </a> </object> </video> 29
30. Fazer: detecção de funcionalidade no HTML <!-- Generic element handling --> <svgwidth="100"height="100"> <circlefill="#090"cx="50"cy="50"r="50"/> </svg> 30